android之AnimationDrawable
16lz
2021-01-23
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(){@Overridepublic boolean onPreDraw() {// TODO Auto-generated method stubfriend_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);}
更多相关文章
- 开机动画(闪动的ANDROID字样的动画图片)
- Android图文详解属性动画
- Android开机动画过程
- android中实现swipe的手势功能及页面拖动动画
- Android实现局部图片滑动指引效果
- Android ImageView 图片等比缩放问题
- Android 属性动画(Property Animation) 源码解析 深入了解其内部实
- Android的Activity屏幕切换动画||GestureDetector、OnGestureLis
- Android使用ViewFlipper实现图片切换功能