Android-Animation动画之Frame Animation帧动画
2013-06-23 16:07
197 查看
这节讲讲Animation的另外一种形式——Frame Animation帧动画
帧动画就是逐帧显示一张图片,来实现动画的效果。
使用帧动画,就要用到AnimationDrawable这个类了。
在本示例,将实现一个转圈加载的动画。
首先,需要有几张图片。安卓并不直接支持gif格式的文件。我们需要把gif图片的每一帧作为一个单独的图片取出来,放到资源文件里去。
我这里一共有8张图片:loading1.png、loading2.png、···、loading8.png
然后,在res文件夹下创建anim文件夹,并在anim文件夹下创建一个名为loading.xml的文件,里面的内容如下:
duration:该图片显示的毫秒值。
该资源文件如同一张图片,它产生的一个对象是继承于Drawable的AnimationDrawable(注意:是Drawable,不是一个Animation),你只需要在控件里将它引入到background里就可以。
loadingTxv就是上面使用了这个动画的TextView,获得它的background后,强转成AnimationDrawable,调用AnimationDrawable的start方法可以让它开始动,stop是停止。
完成!!
另外,如果你的动画不是在xml文件里引入到控件里,而是在java代码里面setBackgroundResource引入的。那么,如果你马上调用start方法的话,动画还是不能动起来。因为它需要等待drawable绘制完毕,调用start才有意义。要解决这个问题,你可以参照以下代码来做:
对动画的介绍暂时到这里,有时间还会介绍其它更丰富的动画形式,包括LayoutAnimationController、GridLayoutAnimationController等。
本节demo下载:http://download.csdn.net/detail/wzg_1987/5635691
帧动画就是逐帧显示一张图片,来实现动画的效果。
使用帧动画,就要用到AnimationDrawable这个类了。
在本示例,将实现一个转圈加载的动画。
首先,需要有几张图片。安卓并不直接支持gif格式的文件。我们需要把gif图片的每一帧作为一个单独的图片取出来,放到资源文件里去。
我这里一共有8张图片:loading1.png、loading2.png、···、loading8.png
然后,在res文件夹下创建anim文件夹,并在anim文件夹下创建一个名为loading.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="160" android:drawable="@drawable/loading1"/> <item android:duration="160" android:drawable="@drawable/loading2"/> <item android:duration="160" android:drawable="@drawable/loading3"/> <item android:duration="160" android:drawable="@drawable/loading4"/> <item android:duration="160" android:drawable="@drawable/loading5"/> <item android:duration="160" android:drawable="@drawable/loading6"/> <item android:duration="160" android:drawable="@drawable/loading7"/> <item android:duration="160" android:drawable="@drawable/loading8"/> </animation-list>oneshot:是否只逐帧显示一次。
duration:该图片显示的毫秒值。
该资源文件如同一张图片,它产生的一个对象是继承于Drawable的AnimationDrawable(注意:是Drawable,不是一个Animation),你只需要在控件里将它引入到background里就可以。
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@anim/loading"/>这样做完之后,动画还是不能自己动的,需要我们给它一个开始动的调用。
AnimationDrawable loadingDw = ((AnimationDrawable)loadingTxv.getBackground()); if(loadingDw.isRunning()){ loadingDw.stop(); }else{ loadingDw.start(); }
loadingTxv就是上面使用了这个动画的TextView,获得它的background后,强转成AnimationDrawable,调用AnimationDrawable的start方法可以让它开始动,stop是停止。
完成!!
另外,如果你的动画不是在xml文件里引入到控件里,而是在java代码里面setBackgroundResource引入的。那么,如果你马上调用start方法的话,动画还是不能动起来。因为它需要等待drawable绘制完毕,调用start才有意义。要解决这个问题,你可以参照以下代码来做:
loadingTxv.setBackgroundResource(R.anim.loading); Object ob = loadingTxv.getBackground(); //获取Drawable对象 loadingAnim = (AnimationDrawable) ob; //将该AnimationDrawable对象传递给其它外部引用 Message msg = new Message(); //使用handler发送一个开启动画的消息,然后在handler的接收方法里面调用loadingAnim.start() msg.what = 1; handler.sendMessage(msg);
对动画的介绍暂时到这里,有时间还会介绍其它更丰富的动画形式,包括LayoutAnimationController、GridLayoutAnimationController等。
本节demo下载:http://download.csdn.net/detail/wzg_1987/5635691
相关文章推荐
- Android的动画机制学习---Animation
- Android动画学习笔记-Android Animation
- Android动画学习笔记-Android Animation
- Android对角线旋转动画,重写Animation
- Android进阶篇之引导页系列之ViewPager实现Animation动画引导页
- android Animation 动画效果介绍
- Android Tween动画之RotateAnimation实现图片不停旋转
- Android UI开发第十二篇——动画效果Animation(一)
- android_animation(渐变动画)
- Android中属性动画Property Animation使用示例(四)
- Android--Animation动画介绍和实现
- 懒人爱家务_动画效果编程基础--AnimationAndroid
- 【Android】Android动画入门Animation 、AnimationUtils
- Android动画学习Demo(1) 关于ViewAnimation的用法及总结
- Android--动画Animation
- [Android 动画]简要分析一下Animator 与 Animation
- Android利用animation-list实现帧动画
- 解析Android中Animation动画的编写要点
- ANDROID_MARS学习笔记_S02_010_Animation_动画效果
- 【Android 基础】Animation 动画介绍和实现