![](https://img.haomeiwen.com/i13519092/c1410ad473b73399.jpg)
一. 作用对象
1. 作用对象: 视图控件View。
2. 不可作用于属性或者其它对象。
二. 原理
原理:按序播放一组预先定义好的图片。
将动画拆分为 帧 的形式,且定义每一帧 = 每一张图片
自己玩小技巧:
- 找到自己需要的gif动画
- 用 gif分解软件将 gif 分解成一张张图片即可
三. 优缺点
缺点:效果单一,逐帧播放需要很多图片,占用内存空间较大,容易引发OOM
优点:制作简单
四. 使用方式
1. xml方式
res/drawable/animation_list.xml
<?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/icon_redwallet_open1"
android:duration="100"/>
<item android:drawable="@drawable/icon_redwallet_open2"
android:duration="100"/>
<item android:drawable="@drawable/icon_redwallet_open3"
android:duration="100"/>
<item android:drawable="@drawable/icon_redwallet_open4"
android:duration="100"/>
<item android:drawable="@drawable/icon_redwallet_open5"
android:duration="100"/>
<item android:drawable="@drawable/icon_redwallet_open6"
android:duration="100"/>
<item android:drawable="@drawable/icon_redwallet_open7"
android:duration="100"/>
<item android:drawable="@drawable/icon_redwallet_open8"
android:duration="100"/>
</animation-list>
Activity中调用:
iv.setImageResource(R.drawable.animation_list);
animationDrawable = (AnimationDrawable) iv.getDrawable();
animationDrawable.start(); //开始动画
animationDrawable.stop(); //结束动画
2. java代码方式
animationDrawable = new AnimationDrawable();
for (int i = 1; i <= 8; i++) {
//第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名
int id = getResources().getIdentifier("icon_redwallet_open" + i, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
animationDrawable.addFrame(drawable, 100);
animationDrawable.setOneShot(false); //false循环 true只播放一次
iv.setImageDrawable(animationDrawable);
}
animationDrawable.start(); //开始动画
animationDrawable.stop(); //结束动画
五. 应用场景
较为复杂的个性化动画效果。
网友评论