From b2da91b14fb8ad15a74d171a298649e8cb6322bb Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Tue, 2 Sep 2014 17:35:20 +0200 Subject: [PATCH] Notifications are now selectable by the Keyboard Also adapted the ripple colors a bit to be more visible. Bug: 17203303 Change-Id: I7d0446d2641bcabb1e09b3af9535d88c4142e216 --- .../drawable/notification_material_bg_dim.xml | 12 ++++--- packages/SystemUI/res/values/colors.xml | 5 ++- .../ActivatableNotificationView.java | 34 +++++++++++++++++++ .../statusbar/NotificationBackgroundView.java | 24 ++++++------- 4 files changed, 57 insertions(+), 18 deletions(-) diff --git a/packages/SystemUI/res/drawable/notification_material_bg_dim.xml b/packages/SystemUI/res/drawable/notification_material_bg_dim.xml index b04394de7b93e..65819428caf88 100644 --- a/packages/SystemUI/res/drawable/notification_material_bg_dim.xml +++ b/packages/SystemUI/res/drawable/notification_material_bg_dim.xml @@ -14,7 +14,11 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License --> - - - - + + + + + + + + diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index f3a62b85cc5ff..6da811f9b8b3e 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -90,7 +90,10 @@ #ff424242 - #20000000 + #28000000 + + + #30000000 #30ffffff diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java index 500bf45602d64..e6984b2bd6d17 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ActivatableNotificationView.java @@ -88,6 +88,9 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView = new PathInterpolator(0.6f, 0, 0.5f, 1); private static final Interpolator ACTIVATE_INVERSE_ALPHA_INTERPOLATOR = new PathInterpolator(0, 0, 0.5f, 1); + private final int mTintedRippleColor; + private final int mLowPriorityRippleColor; + private final int mNormalRippleColor; private boolean mDimmed; private boolean mDark; @@ -153,6 +156,12 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView mNormalColor = getResources().getColor(R.color.notification_material_background_color); mLowPriorityColor = getResources().getColor( R.color.notification_material_background_low_priority_color); + mTintedRippleColor = context.getResources().getColor( + R.color.notification_ripple_tinted_color); + mLowPriorityRippleColor = context.getResources().getColor( + R.color.notification_ripple_color_low_priority); + mNormalRippleColor = context.getResources().getColor( + R.color.notification_ripple_untinted_color); } @Override @@ -191,6 +200,16 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView } } + @Override + protected void drawableStateChanged() { + super.drawableStateChanged(); + if (mDimmed) { + mBackgroundDimmed.setState(getDrawableState()); + } else { + mBackgroundNormal.setState(getDrawableState()); + } + } + private boolean handleTouchEventDimmed(MotionEvent event) { int action = event.getActionMasked(); switch (action) { @@ -372,12 +391,15 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView private void updateBackgroundTint() { int color = getBackgroundColor(); + int rippleColor = getRippleColor(); if (color == mNormalColor) { // We don't need to tint a normal notification color = 0; } mBackgroundDimmed.setTint(color); mBackgroundNormal.setTint(color); + mBackgroundDimmed.setRippleColor(rippleColor); + mBackgroundNormal.setRippleColor(rippleColor); } private void fadeBackground() { @@ -618,6 +640,18 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView } } + private int getRippleColor() { + if (mBgTint != 0) { + return mTintedRippleColor; + } else if (mShowingLegacyBackground) { + return mTintedRippleColor; + } else if (mIsBelowSpeedBump) { + return mLowPriorityRippleColor; + } else { + return mNormalRippleColor; + } + } + /** * When we draw the appear animation, we render the view in a bitmap and render this bitmap * as a shader of a rect. This call creates the Bitmap and switches the drawing mode, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationBackgroundView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationBackgroundView.java index ad274b0a70e16..5db680a1b379e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationBackgroundView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationBackgroundView.java @@ -35,15 +35,9 @@ public class NotificationBackgroundView extends View { private Drawable mBackground; private int mClipTopAmount; private int mActualHeight; - private final int mTintedRippleColor; - private final int mNormalRippleColor; public NotificationBackgroundView(Context context, AttributeSet attrs) { super(context, attrs); - mTintedRippleColor = context.getResources().getColor( - R.color.notification_ripple_tinted_color); - mNormalRippleColor = context.getResources().getColor( - R.color.notification_ripple_untinted_color); } @Override @@ -103,17 +97,10 @@ public class NotificationBackgroundView extends View { } public void setTint(int tintColor) { - int rippleColor; if (tintColor != 0) { mBackground.setColorFilter(tintColor, PorterDuff.Mode.SRC_ATOP); - rippleColor = mTintedRippleColor; } else { mBackground.clearColorFilter(); - rippleColor = mNormalRippleColor; - } - if (mBackground instanceof RippleDrawable) { - RippleDrawable ripple = (RippleDrawable) mBackground; - ripple.setColor(ColorStateList.valueOf(rippleColor)); } invalidate(); } @@ -138,4 +125,15 @@ public class NotificationBackgroundView extends View { // Prevents this view from creating a layer when alpha is animating. return false; } + + public void setState(int[] drawableState) { + mBackground.setState(drawableState); + } + + public void setRippleColor(int color) { + if (mBackground instanceof RippleDrawable) { + RippleDrawable ripple = (RippleDrawable) mBackground; + ripple.setColor(ColorStateList.valueOf(color)); + } + } }