Android动画基础 -- 帧动画
程序员文章站
2022-03-01 20:52:33
...
Android的动画主要分为三类,分别是帧动画、补间动画和属性动画。
本篇博客来看帧动画的实现。
一、什么是帧动画
帧动画一般用来实现较为复杂的个性化动画,通过一系列的图片循环播放,形成视觉上的动画效果。
二、帧动画的特点
在使用帧动画的时候,一定要避免使用过大的图片,以免引起OOM。
帧动画的优点在于使用简单、方便。
三、如何使用
首先将动画资源,即每张图片资源放到drawable文件夹里,这里可以再网上随便照一张gif图,然后使用gif分解软件将gif分解成一张张图片即可
然后可以通过xml或者java代码进行设置
1)java代码方式
AnimationDrawable animationDrawable = new AnimationDrawable();
for (int i = 0; i <= 25; i++) {
int id = getResources().getIdentifier("gif" + i, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
animationDrawable.addFrame(drawable, 100);
}
//开启动画
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
animationDrawable.setOneShot(true);
iv.setImageDrawable(animationDrawable);
// 获取资源对象
animationDrawable.stop();
// 特别注意:在动画start()之前要先stop(),不然在第一次动画之后会停在最后一帧,这样动画就只会触发一次
animationDrawable.start();
// 启动动画
}
});
//停止动画
stopBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
animationDrawable.setOneShot(true);
iv.setImageDrawable(animationDrawable);
animationDrawable.stop();
}
});
2)xml方式
在res/anim的文件夹里创建动画效果.xml文件
然后设置动画资源
<?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/gif0" android:duration="100"/>
<item android:drawable="@drawable/gif0" android:duration="100"/>
<item android:drawable="@drawable/gif0" android:duration="100"/>
...
<item android:drawable="@drawable/gif11" android:duration="100"/>
<item android:drawable="@drawable/gif12" android:duration="100"/>
<item android:drawable="@drawable/gif13" android:duration="100"/>
</animation-list>
最后在代码中设置启停
//开始动画
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iv.setImageResource(R.drawable.你的路径);
// 1. 设置动画
animationDrawable = (AnimationDrawable) iv.getDrawable();
// 2. 获取动画对象
animationDrawable.start();
// 3. 启动动画
}
});
//停止动画
stopBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iv.setImageResource(R.drawable.你的路径);
// 1. 设置动画
animationDrawable = (AnimationDrawable) iv.getDrawable();
// 2. 获取动画对象
animationDrawable.stop();
// 3. 暂停动画
}
});
上一篇: Java小节
下一篇: Android动画基础
推荐阅读
-
一看就喜欢的loading动画效果Android分析实现
-
Android实现卡片翻转动画
-
Android属性动画Property Animation系列一之ObjectAnimator_html/css_WEB-ITnose
-
Android自定义view绘制圆环占比动画
-
Android逐帧动画实现代码
-
Android动画之渐变动画(Tween Animation)详解 (渐变、缩放、位移、旋转)
-
Android动画之补间动画(Tween Animation)实例详解
-
Android动画之逐帧动画(Frame Animation)实例详解
-
Android自定义渐变式炫酷ListView下拉刷新动画
-
iOS基础动画教程分享