前言
帧动画,我们从字面意思来理解,帧:就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。 一帧就是一副静止的画面,连续的帧就形成动画,如电视图象等。
实现方式
xml drawable
文件存放路径: main/res/drawable
android:oneshot 是否执行一次
android:drawable 图片地址
android:duration 展示时间
<?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/Slice1"
android:duration="50" />
<item
android:drawable="@drawable/Slice2"
android:duration="50" />
<item
android:drawable="@drawable/Slice3"
android:duration="50" />
<item
android:drawable="@drawable/Slice4"
android:duration="50" />
<item
android:drawable="@drawable/Slice5"
android:duration="50" />
<item
android:drawable="@drawable/Slice6"
android:duration="50" />
<item
android:drawable="@drawable/Slice7"
android:duration="50" />
<item
android:drawable="@drawable/Slice8"
android:duration="50" />
<item
android:drawable="@drawable/Slice9"
android:duration="50" />
</animation-list>
布局文件
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="启动动画" />
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="停止动画" />
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/z_animation" />
获取动画
animationDrawable = (AnimationDrawable) mIv.getBackground();
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn1:
animationDrawable.start();
break;
case R.id.btn2:
animationDrawable.stop();
break;
}
}
代码方式实现
//创建一个AnimationDrawable
AnimationDrawable animationDrawable = new AnimationDrawable();
//准备好资源图片
int[] ids = {R.drawable.anim_1,R.drawable.anim_2,R.drawable.anim_3,R.drawable.anim_4};
//通过for循环添加每一帧动画
for(int i = 0 ; i < 4 ; i ++){
Drawable frame = getResources().getDrawable(ids[i]);
//设定时长
animationDrawable.addFrame(frame,50);
}
animationDrawable.setOneShot(false);
//将动画设置到背景上
iv.setBackground(animationDrawable);