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));
+ }
+ }
}