android之AnimationDrawable
16lz
2021-12-04
AnimationDrawable是Android实现动画的一种简单的形式,可以用来实现帧动画。
1.在res/drawable下定义friend.xml文件:
[java] view plain copy
- <?xmlversion="1.0"encoding="utf-8"?>
- <animation-listandroid:oneshot="false"
- xmlns:android="http://schemas.android.com/apk/res/android">
- <itemandroid:duration="400"android:drawable="@drawable/friend_light"/>
- <itemandroid:duration="400"android:drawable="@drawable/friend"/>
- </animation-list>
2.在java代码中载入和执行动画:
①载入动画
[java] view plain copy
- Buttonfriend=(Button)findViewById(R.id.friend_btn);
- friend.setBackgroundResource(R.drawable.friend_anim);
- AnimationDrawablefriend_anim=(AnimationDrawable)friend.getBackground();
②执行动画
[java] view plain copy
- friend_anim.start();
[java] view plain copy
- friend_anim.stop();
3. 注意:
默认情况下,在OnCreate()中执行animation.start();是无效的,因为在OnCreate()中AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。
解决办法:
①调用View的getViewTreeObserver().addOnPreDrawListener()
[java] view plain copy
- friend.getViewTreeObserver().addOnPreDrawListener(newOnPreDrawListener(){
- @Override
- publicbooleanonPreDraw(){
- //TODOAuto-generatedmethodstub
- friend_anim.start();
- returntrue;
- }
- });
②使用Handler
[java] view plain copy
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- friend=(Button)findViewById(R.id.friend_btn);
- handler.postDelayed(newRunnable(){
- publicvoidrun(){
- friend.setBackgroundResource(R.drawable.friend_anim);
- friend_anim=(AnimationDrawable)friend.getBackground();
- friend_anim.start();
- }
- },50);
- }
更多相关文章
- (翻译)Android中的定时任务
- android 动画深入分析(一)《android开发艺术与探索》
- animation的xml定义中的android:interpolator属性
- 2011.07.18(4)——— android 播放gif
- android视图切换动画:ViewAnimator类及其子类
- 2011.07.18(2)——— android Animation的另一种运行
- Android(安卓)运行 Linux 可执行程序
- 2011.07.18(2)——— android Animation的另一种运行
- Android(安卓)实现 按钮从两边移到中间动画效果