Android 动画之帧动画的用法
Posted 路 宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 动画之帧动画的用法相关的知识,希望对你有一定的参考价值。
帧动画的简介:
帧动画非常容易理解,其实就是简单的由N张静态图片收集起来,然后我们通过控制依次显示这些图片,因为人眼"视觉残留"的原因,会让我们造成动画的"错觉",跟放电影的原理一样。
而android中实现帧动画,一般我们会用到AnimationDrawable 先编写好Drawable,然后代码中调用start()以及stop()开始或停止播放动画。
实现效果如图:
实现步骤:
一、布局activity_heart.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ImageView
android:id="@+id/iv_frame_anim"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:layout_weight="1"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn_frame_anim"
android:text="开始播放帧动画"
android:layout_marginBottom="50dp"
/>
</LinearLayout>
二、HeartActivity代码:
public class HeartActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView iv_frame_anim;
private AnimationDrawable animationDrawable; //声明一个帧动画对象
private Button btn_frame_anim;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_heart);
iv_frame_anim = findViewById(R.id.iv_frame_anim);
btn_frame_anim = findViewById(R.id.btn_frame_anim);
btn_frame_anim.setOnClickListener(this);
btn_frame_anim.setText("暂停播放帧动画");
showFrameAnimByCode();
}
//在代码中生成帧动画进行播放
private void showFrameAnimByCode() {
//创建帧动画
animationDrawable = new AnimationDrawable();
//下面把每帧图片加入到帧动画的队列中
animationDrawable.addFrame(getResources().getDrawable(R.drawable.flow_p1),50);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.flow_p2),50);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.flow_p3),50);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.flow_p4),50);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.flow_p5),50);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.flow_p6),50);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.flow_p7),50);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.flow_p8),50);
//设置帧动画是否播放一次 true:表示只播放一次 false:表示循环播放
animationDrawable.setOneShot(false);
//设置图像视图的图形为帧动画
iv_frame_anim.setImageDrawable(animationDrawable);
//开始播放帧动画
animationDrawable.start();
}
@Override
public void onClick(View v) {
if (v.getId()==R.id.btn_frame_anim){
if (animationDrawable.isRunning()){
animationDrawable.stop();
btn_frame_anim.setText("开始播放帧动画");
}else {
animationDrawable.start();
btn_frame_anim.setText("暂停播放帧动画");
}
}
}
}
以上是关于Android 动画之帧动画的用法的主要内容,如果未能解决你的问题,请参考以下文章