Android动画背景图自动播放的实现程序

转自:http://www.android100.org/html/201409/23/65688.html


目前我知道的有三种方法:

ImageView imageView = (ImageView)findViewById(R.id.xxx);方法一:使用Runnalbe()来加载

imageView.setBackgroundResource(R.anim.xxxxx);
final AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getBackground();
imageView.post(new Runnable() {
    @Override
        public void run()  {
            animationDrawable.start();
        }
});

方法二:使用AsyncTask异步加载启动

imageView.setBackgroundResource(R.anim.xxxxx);
AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();
RunAnim runAnim=new RunAnim();
runAnim.execute("");
 
class RunAnim extends AsyncTask<String, String, String> {
        @Override
        protected String doInBackground(String... params) {
            if (!animationDrawable.isRunning()) {
                animationDrawable.stop();
                animationDrawable.start();
            }
            return "";
        }
}

方法三:通过添加addOnPreDrawListener来自动加载

imageView.setBackgroundResource(R.anim.xxxxx);
AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();
imageView.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
 
OnPreDrawListener preDrawListener = new OnPreDrawListener(){
    @Override
    public boolean onPreDraw() {
        animationDrawable.start();
        return true; //必须要有这个true返回
    }
};

以上三种方法经过测试没有问题,另外网上有一些说使用重写Activity的onWindowFocusChanged()方法来实现,但是还是有不足,得改变焦点才能触发,虽然理论可以自动实现改变焦点,感觉还是不甚可取。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值