欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android动画-帧动画Drawable Animation

程序员文章站 2022-03-16 14:37:02
...

什么叫帧动画

顾名思义,帧——就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。所以帧动画其实就是由若干张图片连接播放而形成的一种视觉效果。

怎么来用

很简单,跟着这些步骤来,你马上可以实现一个帧动画。
1.在res文件夹下创建anim文件夹,并在里面创建一个drawable_anim.xml,写入代码

<?xml version="1.0" encoding="utf-8"?>
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true" 
    >
    <item android:drawable="@drawable/a0" android:duration="100"/>
    <item android:drawable="@drawable/a1" android:duration="100"/>
    <item android:drawable="@drawable/a2" android:duration="100"/>
    <item android:drawable="@drawable/a3" android:duration="100"/>
    <item android:drawable="@drawable/a4" android:duration="100"/>
    <item android:drawable="@drawable/a5" android:duration="100"/>
    <item android:drawable="@drawable/a6" android:duration="100"/>
    <item android:drawable="@drawable/a7" android:duration="100"/>
    <item android:drawable="@drawable/a8" android:duration="100"/>
</animation-list>

很明显可以看出,每个item代表着一帧,两个属性分别是图片跟停留时间(就是这一帧放多久)。
然后我们在layout布局里,给需要执行的view加上

<ImageView
        android:background="@drawable/drawable_anim" />

最后回到我们的java代码

AnimationDrawable animationDrawable = (AnimationDrawable) iv.getBackground();
animationDrawable.start();

这样就完事了
当然你也可以用纯java代码创建动画,这样来写

AnimationDrawable anim= new AnimationDrawable();
anim.addFrame(getResources().getDrawable(R.drawable.a0), 100);
anim.addFrame(getResources().getDrawable(R.drawable.a1), 100);
anim.addFrame(getResources().getDrawable(R.drawable.a2), 100);
anim.addFrame(getResources().getDrawable(R.drawable.a3), 100);
anim.setOneShot(false);
iv.setBackgroundDrawable(frameAnim);
anim.start();

是不是敲简单,好的,下一篇咱们讲重头戏——属性动画。