Drawable Animation
帧动画能使得你一个接一个的加载一组图片资源来产生动画。这是一种传统的动画方式。通过顺序的播放不同的图片,如同播放一个电影。AnimationDrawable类是Drawable动画(帧动画)的基础。
当你通过代码实现帧动画,你需要使用到AnimationDrawable类的API。而使用一个XML文件列出组成动画的所有帧来实现动画更简单。这种动画的XML文件位于你的Android工程的res/drawable/目录下。这种情况下,XML定义的是动画的帧顺序和每帧持续的时间。
XML文件由<animation-list>元素和一些列的<item>子节点组成。<animation-list>元素作为XML文件的根节点。<item>子节点定义每一帧:每一帧对应一个drawable资源,还有该帧对应的动画持续时间。如下是帧动画的XML文件的例子:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <item android:drawable="@drawable/rocket_thrust1" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust2" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust3" android:duration="200" /> </animation-list>
该动画仅仅只有3帧。通过设置该帧列表的android:oneshot属性为true来设置该动画仅播放一次,然后停留在最后一帧的位置。如果设置为false,动画将无限循环。使用保存在res/drawable/目录下的rocket_thrust.xml文件,可以将该文件定义的动画作为一个背景图片添加在一个View对象上,然后调用该动画播放。如下是一个例子Activity,该例子Activity里,动画被添加到一个ImageView上,然后当触摸屏幕的时候播放动画:
AnimationDrawable rocketAnimation; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = (AnimationDrawable) rocketImage.getBackground(); } public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { rocketAnimation.start(); return true; } return super.onTouchEvent(event); }
注意:在AnimationDrawable上被调用的start()方法不能在Activity里的onCreate()方法里被调用。因为这时AnimationDrawable还没有被附加到window上。如果你想要立即的播放动画,而不需要交互,那么你能在Acitivity的onWindowFocusChanged()方法里调用该方法,这样当Window获取焦点后调用该方法。
关于XML语法、有效标签和属性的更多的介绍,参见Animation Resources
相关推荐
我的博客《Android动画之一:Drawable Animation》附带源码
View Animation Only animate View objects If animate non-view objects, you have to implement your own code ...Drawable Animation Load drawable resources and display them one frame after another
DrawableAnimation的非常简单的小示例,运行效果详见http://blog.csdn.net/yzl1992yzl/article/details/51480449#t5
帧动画(Drawable Animation)示例源码
我的博客《Android动画之一:Drawable Animation》的附带源码
DrawableAnimation帧动画的Demo。其实不下载用我的代码,自己随便加上图片一样可以在你的android项目中运行。我想不要资源分了,但是现在好像不能设置为0资源分啊,最小就是2。请理解
基本的太阳地球月亮模型,地球围绕太阳转,月球围绕地球转
Android 用Animation-list实现逐帧动画,模拟环境系统动画。首次点击时,风扇转动,再次点击时风扇关闭。实现"当温度大于设定值时,冷风自动开启;温度低于设定值时,暖风自动开启"。
Drawable Animation / 帧动画 / Frame 动画 English explanation can go to read this article Ⅲ. Property Animation / 属性动画 English explanation can go to read this article Ⅳ. Ripple Effect / Touch ...
上次提供了Animation动画其一Tween补间动画的源代码,这次提供其二Frame动画的源代码(以直接编码的形式实现Frame动画的Demo,笔者资源中另有以xml形式实现的Demo)。
这个demo解决了由于大量使用大图片,导致极度不流畅,甚至OOM。使用了二次裁剪,进行图片压缩,减小内存的使用
DrawableAnimation也是指此动画。补间动画:渐变动画支持四种类型:平移(Translate)、旋转(Rotate)、缩放(Scale)、不透明度(Alpha);只是显示的位置变动,View的实际位置未改变,表现为View移动到其他地方,...
* Drawable Animation:帧动画,一个一个的展示Drawable的resources,就像放幻灯片一样。 * Property Animation :属性动画只对Android 3.0(API 11)以上版本的Android系统才有效,这种动画可以设置给任何Object...
使用Drawable Animation完成的加载动画自定义控件
android 动画 简单使用 property animation view animation(tween animation)drawable animation(frame animation)
Android提供了几种动画类型:View Animation 、Drawable Animation 、Property Animation 。View Animation相当简单,不过只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性。比如:你希望View有...
很全的Android动画的Demo TweenAnimation DrawableAnimation PropertyAnimation都有很详细的实现
利用AnimationSet实现动画的顺序播放, DrawableAnimation 实现连续播放Frame动画
Drawable animation可以加载Drawable资源实现帧动画。AnimationDrawable是实现Drawable animations的基本类。推荐用XML文件的方法实现Drawable动画,不推荐在代码中实现。这种XML文件存放在工程中res/drawable/目录...
3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三种动画模式在SDK中被称为property animation,view animation,drawable ...