首先,我们先来一个大方向的总结:
image.png接下来,将里面逐个讲解
帧动画
1.定义
即图形以一帧一帧的形式播放的动画,像gif一样的效果
- 作用对象
视图控件(View)
如Android的TextView、Button、imageView等等
不可作用于View组件的属性,如:颜色、背景、长度等等
- 原理
将动画拆分为 帧 的形式,且定义每一帧 = 每一张图片
帧动画的本质:按序播放一组预先定义好的图片
4.使用
步骤一:将动画分解成一张一张照片,存入drawable(如果本身是一个gif图,可找gif分解工具)
步骤二:启动动画(xml和java代码都可)
个人认为xml更简单,就来讲这个吧
- 在res/anim的文件夹里创建动画效果.xml文件 (举例子:dh.xml)
2.设置动画资源
<?xml version="1.0" encoding="utf-8"?>
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true" // 设置是否只播放一次,默认为false
>
// item = 动画图片资源;duration = 设置一帧持续时间(ms)
<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"/>
<item android:drawable="@drawable/a9" android:duration="100"/>
<item android:drawable="@drawable/a10" android:duration="100"/>
<item android:drawable="@drawable/a11" android:duration="100"/>
<item android:drawable="@drawable/a12" android:duration="100"/>
<item android:drawable="@drawable/a13" android:duration="100"/>
<item android:drawable="@drawable/a14" android:duration="100"/>
<item android:drawable="@drawable/a15" android:duration="100"/>
<item android:drawable="@drawable/a16" android:duration="100"/>
<item android:drawable="@drawable/a17" android:duration="100"/>
<item android:drawable="@drawable/a18" android:duration="100"/>
<item android:drawable="@drawable/a19" android:duration="100"/>
<item android:drawable="@drawable/a20" android:duration="100"/>
<item android:drawable="@drawable/a21" android:duration="100"/>
<item android:drawable="@drawable/a22" android:duration="100"/>
<item android:drawable="@drawable/a23" android:duration="100"/>
<item android:drawable="@drawable/a24" android:duration="100"/>
<item android:drawable="@drawable/a25" android:duration="100"/>
</animation-list>
3.启动动画
public class FrameActivity extends AppCompatActivity {
private Button btn_startFrame,btn_stopFrame;//开始结束动画的按钮
private ImageView iv;
private AnimationDrawable animationDrawable;
iv = (ImageView) findViewById(R.id.iv);
btn_startFrame = (Button) findViewById(R.id.btn_startFrame);
btn_stopFrame = (Button) findViewById(R.id.btn_stopFrame);
<-- 开始动画 -->
btn_startFrame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iv.setImageResource(R.drawable.knight_attack);
// 1. 设置动画
animationDrawable = (AnimationDrawable) iv.getDrawable();
// 2. 获取动画对象
animationDrawable.start();
// 3. 启动动画
}
});
//停止动画
btn_stopFrame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iv.setImageResource(R.drawable.knight_attack);
// 1. 设置动画
animationDrawable = (AnimationDrawable) iv.getDrawable();
// 2. 获取动画对象
animationDrawable.stop();
// 3. 暂停动画
}
});
}
}
补间动画
属性动画
工作原理
在一定时间间隔内,通过不断对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果
网友评论