自定义ImageView实现播放帧动画

本文介绍了如何自定义ImageView来实现帧动画,特别是针对一张包含多帧的大图。通过结合不同的实现方式,避免使用SurfaceView另开线程,提供更简单的动画播放控制,包括播放次数和结束监听。关键代码包括自定义的ImageView、attr.xml中的styleable以及自定义的AnimationDrawable。
摘要由CSDN通过智能技术生成

对于帧动画的显示有多种不同的实现方式,帧动画的图片有两种不同的情形,一种是多个单张图片,放在animation-list对应的xml里面,采用轮播的方式进行;另一种是一张大图片排列不同的小图片,之前实现的方式是采用继承SurfaceView,另开线程,逐步分割图片显示,同样也是轮播的方式实现动画,现在我们综合以上两种实现方式,自定义自己实现一张大图的帧动画播放(ps:有时候为了便于维护,需要一张大图实现的帧动画,而不是多张小图片)
图片资源如下:

资源图片

播放简单可爱的图片来展示效果;
关键代码,自定义的ImageView:

package com.example.animationtest;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
/**
 * 自定义ImageView
 * @author xutao
 *
 */
public class AnimationControl extends ImageView{
   

    private Bitmap resourceBip; //播放的图片资源
    private int duration; //时间间隔
    private boolean positive; //正向还是反向播放
    private int repeatCount; //重复播放的次数;0、循环
    private int playAfter; //播放之后的动作
    private MyAnimationDrawable animationDrawable; //播放的资源集合

    public AnimationControl(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub

        TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.animationView);
        int resId = array.getResourceId(R.styleable.animationView_img, 0);
        resourceBip = BitmapFactory.decodeResource(context.getResources(), resId);
        duration = array.getInt(R.styleable.animationView_duration, 500);
        positive = array.getBoolean(R.styleable.animationView_positive, tru
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值