Loading packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +1 −7 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import com.android.internal.widget.CachingIconView; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.ViewInvertHelper; Loading Loading @@ -127,12 +126,7 @@ public class NotificationShelf extends ActivatableNotificationView implements super.setDark(dark, fade, delay); if (mDark == dark) return; mDark = dark; if (fade) { mViewInvertHelper.fade(dark, delay); } else { mViewInvertHelper.update(dark); } mShelfIcons.setAmbient(dark); mShelfIcons.setDark(dark, fade, delay); updateInteractiveness(); } Loading packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +29 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.Drawable; Loading @@ -46,6 +47,7 @@ import android.view.animation.Interpolator; import com.android.internal.statusbar.StatusBarIcon; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.statusbar.notification.NotificationIconDozeHelper; import com.android.systemui.statusbar.notification.NotificationUtils; import java.text.NumberFormat; Loading Loading @@ -99,7 +101,6 @@ public class StatusBarIconView extends AnimatedImageView { private int mDensity; private float mIconScale = 1.0f; private final Paint mDotPaint = new Paint(); private boolean mDotVisible; private float mDotRadius; private int mStaticDotRadius; private int mVisibleState = STATE_ICON; Loading @@ -110,6 +111,8 @@ public class StatusBarIconView extends AnimatedImageView { private OnVisibilityChangedListener mOnVisibilityChangedListener; private int mDrawableColor; private int mIconColor; private int mDecorColor; private float mDarkAmount; private ValueAnimator mColorAnimator; private int mCurrentSetColor = NO_COLOR; private int mAnimationStartColor = NO_COLOR; Loading @@ -119,6 +122,7 @@ public class StatusBarIconView extends AnimatedImageView { animation.getAnimatedFraction()); setColorInternal(newColor); }; private final NotificationIconDozeHelper mDozer; public StatusBarIconView(Context context, String slot, Notification notification) { this(context, slot, notification, false); Loading @@ -127,6 +131,7 @@ public class StatusBarIconView extends AnimatedImageView { public StatusBarIconView(Context context, String slot, Notification notification, boolean blocked) { super(context); mDozer = new NotificationIconDozeHelper(context); mBlocked = blocked; mSlot = slot; mNumberPain = new Paint(); Loading Loading @@ -190,6 +195,7 @@ public class StatusBarIconView extends AnimatedImageView { public StatusBarIconView(Context context, AttributeSet attrs) { super(context, attrs); mDozer = new NotificationIconDozeHelper(context); mBlocked = false; mAlwaysScaleIcon = true; updateIconScale(); Loading Loading @@ -466,7 +472,19 @@ public class StatusBarIconView extends AnimatedImageView { * to the drawable. */ public void setDecorColor(int iconTint) { mDotPaint.setColor(iconTint); mDecorColor = iconTint; updateDecorColor(); } private void updateDecorColor() { int color = NotificationUtils.interpolateColors(mDecorColor, Color.WHITE, mDarkAmount); if (mDotPaint.getColor() != color) { mDotPaint.setColor(color); if (mDotAppearAmount != 0) { invalidate(); } } } /** Loading @@ -477,6 +495,7 @@ public class StatusBarIconView extends AnimatedImageView { mDrawableColor = color; setColorInternal(color); mIconColor = color; mDozer.setColor(color); } private void setColorInternal(int color) { Loading Loading @@ -649,6 +668,14 @@ public class StatusBarIconView extends AnimatedImageView { mOnVisibilityChangedListener = listener; } public void setDark(boolean dark, boolean fade, long delay) { mDozer.setImageDark(this, dark, fade, delay, mIconColor != NO_COLOR); mDozer.setIntensityDark(f -> { mDarkAmount = f; updateDecorColor(); }, dark, fade, delay); } public interface OnVisibilityChangedListener { void onVisibilityChanged(int newVisibility); } Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationDozeHelper.java +12 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.widget.ImageView; import com.android.systemui.Interpolators; import com.android.systemui.statusbar.phone.NotificationPanelView; import java.util.function.Consumer; public class NotificationDozeHelper { private final ColorMatrix mGrayscaleColorMatrix = new ColorMatrix(); Loading Loading @@ -70,6 +72,16 @@ public class NotificationDozeHelper { animator.start(); } public void setIntensityDark(Consumer<Float> listener, boolean dark, boolean animate, long delay) { if (animate) { startIntensityAnimation(a -> listener.accept((Float) a.getAnimatedValue()), dark, delay, null /* listener */); } else { listener.accept(dark ? 1f : 0f); } } public void updateGrayscaleMatrix(float intensity) { mGrayscaleColorMatrix.setSaturation(1 - intensity); } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java +14 −4 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { private int mActualLayoutWidth = NO_VALUE; private float mActualPaddingEnd = NO_VALUE; private float mActualPaddingStart = NO_VALUE; private boolean mCentered; private boolean mDark; private boolean mChangingViewPositions; private int mAddAnimationStartIndex = -1; private int mCannedAnimationStartIndex = -1; Loading Loading @@ -183,6 +183,9 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { mAddAnimationStartIndex = Math.min(mAddAnimationStartIndex, childIndex); } } if (mDark && child instanceof StatusBarIconView) { ((StatusBarIconView) child).setDark(mDark, false, 0); } } @Override Loading Loading @@ -312,7 +315,8 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { numDots++; } } if (mCentered && translationX < getLayoutEnd()) { boolean center = mDark; if (center && translationX < getLayoutEnd()) { float delta = (getLayoutEnd() - translationX) / 2; for (int i = 0; i < childCount; i++) { View view = getChildAt(i); Loading Loading @@ -390,9 +394,15 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { mChangingViewPositions = changingViewPositions; } public void setAmbient(boolean ambient) { mCentered = ambient; public void setDark(boolean dark, boolean fade, long delay) { mDark = dark; mDisallowNextAnimation = true; for (int i = 0; i < getChildCount(); i++) { View view = getChildAt(i); if (view instanceof StatusBarIconView) { ((StatusBarIconView) view).setDark(dark, fade, delay); } } } public IconState getIconState(StatusBarIconView icon) { Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +1 −7 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import com.android.internal.widget.CachingIconView; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.ViewInvertHelper; Loading Loading @@ -127,12 +126,7 @@ public class NotificationShelf extends ActivatableNotificationView implements super.setDark(dark, fade, delay); if (mDark == dark) return; mDark = dark; if (fade) { mViewInvertHelper.fade(dark, delay); } else { mViewInvertHelper.update(dark); } mShelfIcons.setAmbient(dark); mShelfIcons.setDark(dark, fade, delay); updateInteractiveness(); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +29 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.Drawable; Loading @@ -46,6 +47,7 @@ import android.view.animation.Interpolator; import com.android.internal.statusbar.StatusBarIcon; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.statusbar.notification.NotificationIconDozeHelper; import com.android.systemui.statusbar.notification.NotificationUtils; import java.text.NumberFormat; Loading Loading @@ -99,7 +101,6 @@ public class StatusBarIconView extends AnimatedImageView { private int mDensity; private float mIconScale = 1.0f; private final Paint mDotPaint = new Paint(); private boolean mDotVisible; private float mDotRadius; private int mStaticDotRadius; private int mVisibleState = STATE_ICON; Loading @@ -110,6 +111,8 @@ public class StatusBarIconView extends AnimatedImageView { private OnVisibilityChangedListener mOnVisibilityChangedListener; private int mDrawableColor; private int mIconColor; private int mDecorColor; private float mDarkAmount; private ValueAnimator mColorAnimator; private int mCurrentSetColor = NO_COLOR; private int mAnimationStartColor = NO_COLOR; Loading @@ -119,6 +122,7 @@ public class StatusBarIconView extends AnimatedImageView { animation.getAnimatedFraction()); setColorInternal(newColor); }; private final NotificationIconDozeHelper mDozer; public StatusBarIconView(Context context, String slot, Notification notification) { this(context, slot, notification, false); Loading @@ -127,6 +131,7 @@ public class StatusBarIconView extends AnimatedImageView { public StatusBarIconView(Context context, String slot, Notification notification, boolean blocked) { super(context); mDozer = new NotificationIconDozeHelper(context); mBlocked = blocked; mSlot = slot; mNumberPain = new Paint(); Loading Loading @@ -190,6 +195,7 @@ public class StatusBarIconView extends AnimatedImageView { public StatusBarIconView(Context context, AttributeSet attrs) { super(context, attrs); mDozer = new NotificationIconDozeHelper(context); mBlocked = false; mAlwaysScaleIcon = true; updateIconScale(); Loading Loading @@ -466,7 +472,19 @@ public class StatusBarIconView extends AnimatedImageView { * to the drawable. */ public void setDecorColor(int iconTint) { mDotPaint.setColor(iconTint); mDecorColor = iconTint; updateDecorColor(); } private void updateDecorColor() { int color = NotificationUtils.interpolateColors(mDecorColor, Color.WHITE, mDarkAmount); if (mDotPaint.getColor() != color) { mDotPaint.setColor(color); if (mDotAppearAmount != 0) { invalidate(); } } } /** Loading @@ -477,6 +495,7 @@ public class StatusBarIconView extends AnimatedImageView { mDrawableColor = color; setColorInternal(color); mIconColor = color; mDozer.setColor(color); } private void setColorInternal(int color) { Loading Loading @@ -649,6 +668,14 @@ public class StatusBarIconView extends AnimatedImageView { mOnVisibilityChangedListener = listener; } public void setDark(boolean dark, boolean fade, long delay) { mDozer.setImageDark(this, dark, fade, delay, mIconColor != NO_COLOR); mDozer.setIntensityDark(f -> { mDarkAmount = f; updateDecorColor(); }, dark, fade, delay); } public interface OnVisibilityChangedListener { void onVisibilityChanged(int newVisibility); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationDozeHelper.java +12 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.widget.ImageView; import com.android.systemui.Interpolators; import com.android.systemui.statusbar.phone.NotificationPanelView; import java.util.function.Consumer; public class NotificationDozeHelper { private final ColorMatrix mGrayscaleColorMatrix = new ColorMatrix(); Loading Loading @@ -70,6 +72,16 @@ public class NotificationDozeHelper { animator.start(); } public void setIntensityDark(Consumer<Float> listener, boolean dark, boolean animate, long delay) { if (animate) { startIntensityAnimation(a -> listener.accept((Float) a.getAnimatedValue()), dark, delay, null /* listener */); } else { listener.accept(dark ? 1f : 0f); } } public void updateGrayscaleMatrix(float intensity) { mGrayscaleColorMatrix.setSaturation(1 - intensity); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconContainer.java +14 −4 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { private int mActualLayoutWidth = NO_VALUE; private float mActualPaddingEnd = NO_VALUE; private float mActualPaddingStart = NO_VALUE; private boolean mCentered; private boolean mDark; private boolean mChangingViewPositions; private int mAddAnimationStartIndex = -1; private int mCannedAnimationStartIndex = -1; Loading Loading @@ -183,6 +183,9 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { mAddAnimationStartIndex = Math.min(mAddAnimationStartIndex, childIndex); } } if (mDark && child instanceof StatusBarIconView) { ((StatusBarIconView) child).setDark(mDark, false, 0); } } @Override Loading Loading @@ -312,7 +315,8 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { numDots++; } } if (mCentered && translationX < getLayoutEnd()) { boolean center = mDark; if (center && translationX < getLayoutEnd()) { float delta = (getLayoutEnd() - translationX) / 2; for (int i = 0; i < childCount; i++) { View view = getChildAt(i); Loading Loading @@ -390,9 +394,15 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout { mChangingViewPositions = changingViewPositions; } public void setAmbient(boolean ambient) { mCentered = ambient; public void setDark(boolean dark, boolean fade, long delay) { mDark = dark; mDisallowNextAnimation = true; for (int i = 0; i < getChildCount(); i++) { View view = getChildAt(i); if (view instanceof StatusBarIconView) { ((StatusBarIconView) view).setDark(dark, fade, delay); } } } public IconState getIconState(StatusBarIconView icon) { Loading