程序员

Android学习笔记(八)| Android动画(中)—— 帧

2019-02-22  本文已影响0人  CCCode1997

参考书籍:《Android开发艺术探索》 任玉刚
如有错漏,请批评指出!

帧动画是顺序播放一组预先定义好的图片。不同于View动画,系统提供了一个类 AnimationDrawable 来使用帧动画,它的使用很简单,下面来看:

  1. 首先当然是要准备一组图片素材:

    图片来源: https://blog.csdn.net/aminfo/article/details/7847761
    这里我提供一个素材下载地址:https://pan.baidu.com/s/1655oSJV66fNZu-LJ9NiPBg 提取码:un0d

  2. 在 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: 当前帧播放时间
  3. 最后就是将我们定义的 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动画(下)—— 属性动画

上一篇下一篇

猜你喜欢

热点阅读