Android 逐帧动画(Frame)
程序员文章站
2022-03-18 18:47:17
...
Android 逐帧动画(Frame) 很好理解就是将多张图片放到一个容器里面通过控制这些图片一帧一张图片从而形成动画
使用的使用通过AnimationDrawable 加载放好的图片 然后通过调用start 和stop 开启和暂停动画
第一种方法:通过xml 来实现
首先需要在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/girl_1"
android:duration="300" />
<item
android:drawable="@drawable/girl_2"
android:duration="300" />
<item
android:drawable="@drawable/girl_3"
android:duration="300" />
<item
android:drawable="@drawable/girl_4"
android:duration="300" />
<item
android:drawable="@drawable/girl_5"
android:duration="300" />
<item
android:drawable="@drawable/girl_6"
android:duration="300" />
<item
android:drawable="@drawable/girl_7"
android:duration="300" />
<item
android:drawable="@drawable/girl_8"
android:duration="300" />
<item
android:drawable="@drawable/girl_9"
android:duration="300" />
<item
android:drawable="@drawable/girl_10"
android:duration="300" />
<item
android:drawable="@drawable/girl_11"
android:duration="300" />
</animation-list>
java 代码 包含xml 实现和java 代码实现动画
public class FrameActivity extends AppCompatActivity {
private Button startBtn; // 开始动画按钮
private Button stopBtn; // 停止动画按钮
private ImageView imageView, image; // 显示图片
private AnimationDrawable anim, animationDrawable;
@SuppressLint("ResourceType")
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frame_activity_layout);
// 实例化控件
startBtn = findViewById(R.id.start);
stopBtn = findViewById(R.id.stop);
imageView = findViewById(R.id.image);
image = findViewById(R.id.img);
anim = new AnimationDrawable();
for (int i = 1; i < 6; i++) {
int id = getResources().getIdentifier("img" + i, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
anim.addFrame(drawable, 500);
imageView.setImageDrawable(anim);
}
// 指定动画的帧的列表
image.setBackgroundResource(R.drawable.boy_and_girl);
// AnimationDrawable--与逐帧动画相关的Drawable
animationDrawable = (AnimationDrawable) image.getBackground();
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 开始动画
anim.start();
animationDrawable.start();
}
});
stopBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 暂停动画
anim.stop();
animationDrawable.stop();
}
});
}
}
这样就实现了上面动画的效果很简单,但是自己从来不用,因为ui从来没有给自己提供过这么多图片,
自己也是在一个老项目中看到了,这里回顾下,之前写过这个demo 这里给出demo 地址
上一篇: New
下一篇: pytyon 带有重复的全排列