android之AnimationDrawable

本文介绍如何在Android中使用AnimationDrawable实现帧动画效果。通过定义XML文件设置动画帧及持续时间,并在Java代码中加载和播放动画。同时提供了解决动画不播放问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AnimationDrawable是Android实现动画的一种简单的形式,可以用来实现帧动画。

1.在res/drawable下定义friend.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<animation-list android:oneshot="false"
	xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:duration="400" android:drawable="@drawable/friend_light" />
	<item android:duration="400" android:drawable="@drawable/friend" />
</animation-list> 
其中,每一个item是一帧,android:duration="400"表示每帧持续400ms,android:drawable是每帧要显示的图片。

2.在java代码中载入和执行动画:

①载入动画

Button friend = (Button)findViewById(R.id.friend_btn);
friend.setBackgroundResource(R.drawable.friend_anim);
AnimationDrawable friend_anim= (AnimationDrawable) friend.getBackground();

②执行动画

friend_anim.start();
③停止动画

friend_anim.stop();

3. 注意:

默认情况下,在OnCreate()中执行animation.start();是无效的,因为在OnCreate()中AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。

解决办法:

①调用View的getViewTreeObserver().addOnPreDrawListener()

friend.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener(){

	@Override
	public boolean onPreDraw() {
		// TODO Auto-generated method stub
		friend_anim.start();
		return true;
	}
	
});

②使用Handler

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    friend = (Button)findViewById(R.id.friend_btn);
    handler.postDelayed(new Runnable() {
        public void run() {
        	friend.setBackgroundResource(R.drawable.friend_anim);
        	friend_anim = (AnimationDrawable) friend.getBackground();
        	friend_anim.start();
        }
    }, 50);
} 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值