这个view可以将多张图片轮流切换,实现帧动画的效果,逻辑很简单,代码已码好方便使用
/**
* 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[]{R.drawable.img1,R.drawable.img2...},调用
setImages(int[])//设置动画源图片
setIntervalTime(time);//设置每帧切换时间
startAnim()//开始动画
stopAnim()//结束动画
xml布局<AnimImageView
android:id="@+id/ivAnim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/defaultImg"
/>