70 lines
1.6 KiB
Java
70 lines
1.6 KiB
Java
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;
|
|
}
|
|
}
|
|
|