参考书籍:《Android开发艺术探索》 任玉刚
如有错漏,请批评指出!
帧动画是顺序播放一组预先定义好的图片。不同于View动画,系统提供了一个类 AnimationDrawable 来使用帧动画,它的使用很简单,下面来看:
-
首先当然是要准备一组图片素材:
图片来源: https://blog.csdn.net/aminfo/article/details/7847761
这里我提供一个素材下载地址:https://pan.baidu.com/s/1655oSJV66fNZu-LJ9NiPBg 提取码:un0d -
在 res/drawable 目录下定义一个 Drawable resource file,要定义帧动画,我们需要用到 <drawable-list/> 标签
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/draw1" android:duration="200"/> <item android:drawable="@drawable/draw2" android:duration="200"/> <item android:drawable="@drawable/draw3" android:duration="200"/> <item android:drawable="@drawable/draw4" android:duration="200"/> <item android:drawable="@drawable/draw5" android:duration="200"/> <item android:drawable="@drawable/draw6" android:duration="200"/> </animation-list>
这里涉及到 <drawable-list/> 标签的一个常用属性:
- oneshot: 它的可选值是bool型,true 表示只播放一次,停在最后一帧,false 表示 无限循环播放(默认为false)。
接下来就是添加每一帧的item列表,对应两个属性:
- drawable: 素材图片
- duration: 当前帧播放时间
-
最后就是将我们定义的 AnimationDrawable 作为View的背景并通过 Drawable 来播放动画
public class DrawableAnimActivity extends AppCompatActivity { @BindView(R.id.draw_anim) ImageView imgAnim; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drawable_anim); ButterKnife.bind(this); imgAnim.setBackgroundResource(R.drawable.draw_anim); AnimationDrawable drawable = (AnimationDrawable)imgAnim.getBackground(); drawable.start(); } }
帧动画的使用很简单,但是比较容易引起 OOM,因此在使用时要尽量避免使用过多尺寸较大的图片。
上一篇:Android学习笔记(七)| Android动画(上)—— View动画
下一篇:Android学习笔记(九)| Android动画(下)—— 属性动画
网友评论