Android中的AnimationDrawable(图片动画)介绍及使用
2014-01-15 17:40
453 查看
Drawable animation可以加载Drawable资源实现帧动画。AnimationDrawable是实现Drawable animations的基本类。推荐用XML文件的方法实现Drawable动画,不推荐在代码中实现。这种XML文件存放在工程中res/drawable/目录下。XML文件的指令(即属性)为动画播放的顺序和时间间隔。
使用步骤:
1.定义动画文件,即变化的图片文件
在XML文件中<animation-list>元素为根节点,<item>节点定义了每一帧,表示一个drawable资源的帧和帧间隔。下面是一个XML文件的实例:
rocket_thrust.xml
设置Android:oneshot属性为true,表示此次动画只执行一次,最后停留在最后一帧。设置为false则动画循环播放。文件可以添加为Image背景,触发的时候播放。
2.然后在代码中定义出AnimationDrawable对象,并设置到view的background上,然后设置开始播放就可以了:
使用方式:
方式1:Drawable Animation本身就是一个Drawable资源文件,所以直接在xml中设置为指定View的背景即可。然后启动animation.start().
方式2:代码中通过View. setBackgroundResource(resID). 然后启动 animation.start().
看例子:
注意:,一旦给指定View设置Drawable Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable
Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable
Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
start()方法不能在onCreate()函数中调用。因为AnimationDrawable并未完全关联到Window,在onCreate()方法中,View并未完成显示(同理,在此方法中测量某个View的宽高,常得到0值。也同理SurfaceHolder要增加Callback方法)。在此如果想最快的启动动画,使用监听方法onWindowFoucsChanged().
虽说最好用xml文件定义动画,但仍然可以使用代码实现,具体参考http://blog.csdn.net/sjf0115/article/details/7265307
使用步骤:
1.定义动画文件,即变化的图片文件
在XML文件中<animation-list>元素为根节点,<item>节点定义了每一帧,表示一个drawable资源的帧和帧间隔。下面是一个XML文件的实例:
rocket_thrust.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>
设置Android:oneshot属性为true,表示此次动画只执行一次,最后停留在最后一帧。设置为false则动画循环播放。文件可以添加为Image背景,触发的时候播放。
2.然后在代码中定义出AnimationDrawable对象,并设置到view的background上,然后设置开始播放就可以了:
使用方式:
方式1:Drawable Animation本身就是一个Drawable资源文件,所以直接在xml中设置为指定View的背景即可。然后启动animation.start().
方式2:代码中通过View. setBackgroundResource(resID). 然后启动 animation.start().
看例子:
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); //roket_trust为定义的XML文件 rocketAnimation = (AnimationDrawable) rocketImage.getBackground(); } public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { rocketAnimation.start(); return true; } return super.onTouchEvent(event); }
注意:,一旦给指定View设置Drawable Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable
Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable
Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();注意:,一旦给指定View设置Drawable Animation之后,其BackGround就变成AnimationDrawable对象,代码如下: rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
start()方法不能在onCreate()函数中调用。因为AnimationDrawable并未完全关联到Window,在onCreate()方法中,View并未完成显示(同理,在此方法中测量某个View的宽高,常得到0值。也同理SurfaceHolder要增加Callback方法)。在此如果想最快的启动动画,使用监听方法onWindowFoucsChanged().
//获得我们xml定义的AnimationDrawable animDrawable=(AnimationDrawable) getResources().getDrawable(R.anim.frame_animation); 一段参考代码: @Override publicvoid onWindowFocusChanged(boolean hasFocus) { // TODO Auto-generated method stub if(hasFocus) { imageView.setBackgroundResource(R.anim.frame_animation); animDrawable = (AnimationDrawable) imageView.getBackground(); animDrawable.start(); } }
虽说最好用xml文件定义动画,但仍然可以使用代码实现,具体参考http://blog.csdn.net/sjf0115/article/details/7265307
相关文章推荐
- Android--Animation动画的基本使用与介绍
- android AsyncTask介绍 详解AsyncTask的使用 使用实例---加载网络图片
- Android三种动画(属性、视图、帧动画)介绍基本使用
- Android 补间动画的简单介绍及使用
- android 图片加载库 Glide 的使用介绍
- Android中如何使用rotate实现图片不停旋转的效果与动画的停止
- Android中使用多张图片组成动画 AnimationDrawable
- android Fresco框架使用与介绍(图片加载组件)
- android 图片加载库 Glide 的使用介绍
- Android中动画的介绍以及使用
- Android中图片缓存、显示框架Glide的介绍与使用
- Android中使用多张图片组成动画 AnimationDrawable
- Android Animation 动画的使用方法和介绍
- android mvp快速开发框架介绍(dileber使用之图片下载工具)
- Android中图片缓存、显示框架Picasso的介绍与使用
- Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍
- android 图片加载库 Glide 的使用介绍
- android mvp高速开发框架介绍(dileber使用之图片下载工具)
- Glide图片框架使用详细介绍(四)自定义动画
- Android下Animation动画的使用 及 Volley加载图片动画实现