diff options
author | Cristina Stancu <crstn@google.com> | 2013-08-16 11:15:40 +0100 |
---|---|---|
committer | Cristina Stancu <crstn@google.com> | 2013-08-16 12:06:59 +0100 |
commit | d791998dd8643048ae40adaad2311fed0543bbb1 (patch) | |
tree | 54f65ffa38c97eb9710e705e70c655872ff362ef /src/com/android/launcher3/HolographicImageView.java | |
parent | e3381e11b0dbee7e956f72c0d1b92904ab171acf (diff) | |
download | android_packages_apps_Trebuchet-d791998dd8643048ae40adaad2311fed0543bbb1.tar.gz android_packages_apps_Trebuchet-d791998dd8643048ae40adaad2311fed0543bbb1.tar.bz2 android_packages_apps_Trebuchet-d791998dd8643048ae40adaad2311fed0543bbb1.zip |
Modify qsb bar elements to handle hotword state.
They currently handle a pressed mode (showing a blue overlay), we'd like
them to also handle a hotword state that would modify their appearance
when hotword is available and active.
Meant to work with: ag/344334
Change-Id: I07e261ce64307fdad8a4c16fc02eb009ca826ece
Diffstat (limited to 'src/com/android/launcher3/HolographicImageView.java')
-rw-r--r-- | src/com/android/launcher3/HolographicImageView.java | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/com/android/launcher3/HolographicImageView.java b/src/com/android/launcher3/HolographicImageView.java index 0ad82a70c..ce50db104 100644 --- a/src/com/android/launcher3/HolographicImageView.java +++ b/src/com/android/launcher3/HolographicImageView.java @@ -17,13 +17,23 @@ package com.android.launcher3; import android.content.Context; +import android.content.res.TypedArray; import android.graphics.Canvas; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.StateListDrawable; import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnFocusChangeListener; +import android.view.View.OnTouchListener; import android.widget.ImageView; public class HolographicImageView extends ImageView { private final HolographicViewHelper mHolographicHelper; + private boolean mHotwordOn; + private boolean mIsPressed; + private boolean mIsFocused; public HolographicImageView(Context context) { this(context, null); @@ -37,6 +47,31 @@ public class HolographicImageView extends ImageView { super(context, attrs, defStyle); mHolographicHelper = new HolographicViewHelper(context); + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HolographicLinearLayout, + defStyle, 0); + mHotwordOn = a.getBoolean(R.styleable.HolographicLinearLayout_stateHotwordOn, false); + a.recycle(); + + setOnTouchListener(new OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + if (isPressed() != mIsPressed) { + mIsPressed = isPressed(); + refreshDrawableState(); + } + return false; + } + }); + + setOnFocusChangeListener(new OnFocusChangeListener() { + @Override + public void onFocusChange(View v, boolean hasFocus) { + if (isFocused() != mIsFocused) { + mIsFocused = isFocused(); + refreshDrawableState(); + } + } + }); } void invalidatePressedFocusedStates() { @@ -44,6 +79,19 @@ public class HolographicImageView extends ImageView { } @Override + protected void drawableStateChanged() { + super.drawableStateChanged(); + + mHolographicHelper.generatePressedFocusedStates(this); + Drawable d = getDrawable(); + if (d instanceof StateListDrawable) { + StateListDrawable sld = (StateListDrawable) d; + sld.setState(getDrawableState()); + sld.invalidateSelf(); + } + } + + @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); @@ -51,4 +99,25 @@ public class HolographicImageView extends ImageView { // measure/layout mHolographicHelper.generatePressedFocusedStates(this); } + + private boolean isHotwordOn() { + return mHotwordOn; + } + + public void setHotwordState(boolean on) { + if (on == mHotwordOn) { + return; + } + mHotwordOn = on; + refreshDrawableState(); + } + + @Override + public int[] onCreateDrawableState(int extraSpace) { + final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); + if (isHotwordOn()) { + mergeDrawableStates(drawableState, new int[] {R.attr.stateHotwordOn}); + } + return drawableState; + } } |