summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/HolographicImageView.java
diff options
context:
space:
mode:
authorCristina Stancu <crstn@google.com>2013-08-16 11:15:40 +0100
committerCristina Stancu <crstn@google.com>2013-08-16 12:06:59 +0100
commitd791998dd8643048ae40adaad2311fed0543bbb1 (patch)
tree54f65ffa38c97eb9710e705e70c655872ff362ef /src/com/android/launcher3/HolographicImageView.java
parente3381e11b0dbee7e956f72c0d1b92904ab171acf (diff)
downloadandroid_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.java69
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;
+ }
}