Fixed an issue where icons could remain white
Test: code inspection
Change-Id: Ib2d2e5f5a638bd86fcd17e8c3dfe28501de75bad
Fixes: 77024183
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationDozeHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationDozeHelper.java
index 0b3b3cb..fb362c5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationDozeHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationDozeHelper.java
@@ -21,14 +21,17 @@
import android.animation.ValueAnimator;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
+import android.view.View;
import android.widget.ImageView;
import com.android.systemui.Interpolators;
+import com.android.systemui.R;
import com.android.systemui.statusbar.phone.NotificationPanelView;
import java.util.function.Consumer;
public class NotificationDozeHelper {
+ private static final int DOZE_ANIMATOR_TAG = R.id.doze_intensity_tag;
private final ColorMatrix mGrayscaleColorMatrix = new ColorMatrix();
public void fadeGrayscale(final ImageView target, final boolean dark, long delay) {
@@ -76,11 +79,26 @@
}
public void setIntensityDark(Consumer<Float> listener, boolean dark,
- boolean animate, long delay) {
+ boolean animate, long delay, View view) {
if (animate) {
startIntensityAnimation(a -> listener.accept((Float) a.getAnimatedValue()), dark, delay,
- null /* listener */);
+ new AnimatorListenerAdapter() {
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ view.setTag(DOZE_ANIMATOR_TAG, null);
+ }
+
+ @Override
+ public void onAnimationStart(Animator animation) {
+ view.setTag(DOZE_ANIMATOR_TAG, animation);
+ }
+ } /* listener */);
} else {
+ Animator animator = (Animator) view.getTag(DOZE_ANIMATOR_TAG);
+ if (animator != null) {
+ animator.cancel();
+ }
listener.accept(dark ? 1f : 0f);
}
}