Merge "AnimatedImageView: Stop the animation when we're not visible." into gingerbread
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/AnimatedImageView.java b/packages/SystemUI/src/com/android/systemui/statusbar/AnimatedImageView.java
index 70d4d6a..d4491d8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/AnimatedImageView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/AnimatedImageView.java
@@ -20,6 +20,8 @@
 import android.graphics.drawable.AnimationDrawable;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
+import android.util.Slog;
+import android.view.View;
 import android.widget.ImageView;
 import android.widget.RemoteViews.RemoteView;
 
@@ -43,7 +45,7 @@
         }
         if (drawable instanceof AnimationDrawable) {
             mAnim = (AnimationDrawable)drawable;
-            if (mAttached) {
+            if (isShown()) {
                 mAnim.start();
             }
         } else {
@@ -67,9 +69,6 @@
     @Override
     public void onAttachedToWindow() {
         super.onAttachedToWindow();
-        if (mAnim != null) {
-            mAnim.start();
-        }
         mAttached = true;
     }
 
@@ -81,5 +80,17 @@
         }
         mAttached = false;
     }
+
+    @Override
+    protected void onVisibilityChanged(View changedView, int vis) {
+        super.onVisibilityChanged(changedView, vis);
+        if (mAnim != null) {
+            if (isShown()) {
+                mAnim.start();
+            } else {
+                mAnim.stop();
+            }
+        }
+    }
 }