AOD: Do not animate notification icons while dozing
Uses power, and gets icons stuck mid-animation once the
device enters low-power state on AOD.
Change-Id: Iba354bd24eac0a8327890374ea537236256e993d
Fixes: 63388065
Test: Initiate download, go to AOD. Observe whether icon animates or not.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/AnimatedImageView.java b/packages/SystemUI/src/com/android/systemui/statusbar/AnimatedImageView.java
index ae665c7..e5aad03 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/AnimatedImageView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/AnimatedImageView.java
@@ -32,6 +32,7 @@
private final boolean mHasOverlappingRendering;
AnimationDrawable mAnim;
boolean mAttached;
+ private boolean mAllowAnimation;
// Tracks the last image that was set, so that we don't refresh the image if it is exactly
// the same as the previous one. If this is a resid, we track that. If it's a drawable, we
@@ -56,6 +57,17 @@
}
}
+ public void setAllowAnimation(boolean allowAnimation) {
+ if (mAllowAnimation != allowAnimation) {
+ mAllowAnimation = allowAnimation;
+ updateAnim();
+ if (!mAllowAnimation && mAnim != null) {
+ // Reset drawable such that we show the first frame whenever we're not animating.
+ mAnim.setVisible(getVisibility() == VISIBLE, true /* restart */);
+ }
+ }
+ }
+
private void updateAnim() {
Drawable drawable = getDrawable();
if (mAttached && mAnim != null) {
@@ -63,7 +75,7 @@
}
if (drawable instanceof AnimationDrawable) {
mAnim = (AnimationDrawable) drawable;
- if (isShown()) {
+ if (isShown() && mAllowAnimation) {
mAnim.start();
}
} else {
@@ -114,7 +126,7 @@
protected void onVisibilityChanged(View changedView, int vis) {
super.onVisibilityChanged(changedView, vis);
if (mAnim != null) {
- if (isShown()) {
+ if (isShown() && mAllowAnimation) {
mAnim.start();
} else {
mAnim.stop();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
index 89694b33..05d47ec 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -756,9 +756,16 @@
updateIconScale();
updateDecorColor();
updateIconColor();
+ updateAllowAnimation();
}, dark, fade, delay);
}
+ private void updateAllowAnimation() {
+ if (mDarkAmount == 0 || mDarkAmount == 1) {
+ setAllowAnimation(mDarkAmount == 0);
+ }
+ }
+
public interface OnVisibilityChangedListener {
void onVisibilityChanged(int newVisibility);
}