| package com.android.server.status; |
| |
| import android.content.Context; |
| import android.graphics.drawable.AnimationDrawable; |
| import android.graphics.drawable.Drawable; |
| import android.util.AttributeSet; |
| import android.widget.ImageView; |
| import android.widget.RemoteViews.RemoteView; |
| |
| @RemoteView |
| public class AnimatedImageView extends ImageView { |
| AnimationDrawable mAnim; |
| boolean mAttached; |
| |
| public AnimatedImageView(Context context) { |
| super(context); |
| } |
| |
| public AnimatedImageView(Context context, AttributeSet attrs) { |
| super(context, attrs); |
| } |
| |
| private void updateAnim() { |
| Drawable drawable = getDrawable(); |
| if (mAttached && mAnim != null) { |
| mAnim.stop(); |
| } |
| if (drawable instanceof AnimationDrawable) { |
| mAnim = (AnimationDrawable)drawable; |
| if (mAttached) { |
| mAnim.start(); |
| } |
| } else { |
| mAnim = null; |
| } |
| } |
| |
| @Override |
| public void setImageDrawable(Drawable drawable) { |
| super.setImageDrawable(drawable); |
| updateAnim(); |
| } |
| |
| @Override |
| @android.view.RemotableViewMethod |
| public void setImageResource(int resid) { |
| super.setImageResource(resid); |
| updateAnim(); |
| } |
| |
| @Override |
| public void onAttachedToWindow() { |
| super.onAttachedToWindow(); |
| if (mAnim != null) { |
| mAnim.start(); |
| } |
| mAttached = true; |
| } |
| |
| @Override |
| public void onDetachedFromWindow() { |
| super.onDetachedFromWindow(); |
| if (mAnim != null) { |
| mAnim.stop(); |
| } |
| mAttached = false; |
| } |
| } |
| |