/** * Created by vV on 2017/3/2. * * 播放帧动画的ImageView */ public class AnimImageView extends ImageView { private long intervalTime = 1000; private int order = 0; private int[] imgs = new int[]{}; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (order == imgs.length){ order = 0; } setImageResource(imgs[order]); if (imgs.length <= 1){ handler.removeCallbacks(r); } order++; } }; private Runnable r = new Runnable() { @Override public void run() { handler.postDelayed(r,intervalTime); handler.sendEmptyMessage(0); } }; /** * * @param context */ public AnimImageView(Context context) { super(context); } public AnimImageView(Context context, AttributeSet attrs) { super(context, attrs); } public AnimImageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } /** * 设置每帧间隔时间 * @param time * @return */ public AnimImageView setIntervalTime(long time){ intervalTime = time; return this; } /** * 设置图片源,用于切换的图片数组 * @param images Resource Id * @return */ public AnimImageView setImages(int[] images){ imgs = images; return this; } /** * 开始动画 */ public void startAnim(){ handler.post(r); } /** * 暂停动画 */ public void stopAnim(){ handler.removeCallbacks(r); } }
使用很简单,将动画帧图片按顺序存放在一个int[],调用
setImages(int[])//设置动画源图片
setIntervalTime(time);//设置每帧切换时间
startAnim()//开始动画
stopAnim()//结束动画
xml布局
<com.fdstech.vpan.vpan3.customview.AnimImageView android:id="@+id/ivAnim" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/defaultImg" />