Android逐帧动画的简单使用-语音播放效果的实现
逐帧动画(Frame-By-Frame Animation)原理很简单,即快速切换不同的图片,形成动画效果。Android中逐帧动画的实现方式也很简单,下面以语音播放效果为例说明。
1. 首先准备图片素材
三张图片分别命名为play1.png, play2.png, play3.png,放入drawable目录下,图片如下:
2. 编写anim.xml文件,放人drawable目录下,文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<animation-listxmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/play3"android:duration="200"/>
<item android:drawable="@drawable/play2"android:duration="200"/>
<item android:drawable="@drawable/play1"android:duration="200"/>
</animation-list>
(注:1,oneshot表示是否循环播放,true表示不循环,false表示循环,duration表示间隔时间
2,三张图片所在item的顺序,表示播放顺序,即按照play3-play2-play1顺序播放)
3. 编写activity_main.xml布局,将上面的anim.xml设置为ImageView的背景。文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/startAnim"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:text="startAnim"/>
<Button
android:id="@+id/stopAnim"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:text="stopAnim"/>
</LinearLayout>
<ImageView
android:id="@+id/ivAnim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/anim"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
预览图片如下图:
4. 获取ImageView的背景,强转成AnimationDrawable,然后分别调用start()和stop()来控制动画的开始与停止,java代码如下:
packagecom.example;
importandroid.app.Activity;
importandroid.graphics.drawable.AnimationDrawable;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ImageView;
public classMainActivity extends Activity {
// 开始按钮/停止按钮
private Button startAnim;
private Button stopAnim;
private AnimationDrawabledrawable;
private ImageView ivAnim;
@Override
public voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 控件初始化
startAnim =(Button) findViewById(R.id.startAnim);
stopAnim =(Button) findViewById(R.id.stopAnim);
ivAnim =(ImageView) findViewById(R.id.ivAnim);
drawable = (AnimationDrawable)ivAnim.getBackground();
// 开始按钮设置监听器
startAnim.setOnClickListener(newOnClickListener() {
@Override
public voidonClick(View v) {
if (drawable !=null) {
drawable.start();
}
}
});
// 停止按钮设置监听器
stopAnim.setOnClickListener(newOnClickListener() {
@Override
public voidonClick(View v) {
if (drawable !=null) {
drawable.stop();
}
}
});
}
}
更多相关文章
- Android(安卓)Studio—— 关于在Android(安卓)Studio中使用Asset
- Android图片压缩质量参数Bitmap.Config RGB_565、 ARGB_8888的含
- Android闪屏页动画不起作用的解决方法
- android中selector在java代码中使用无效的解决方案
- android HorizontalScrollView替代Gallery
- Android:自定义DialogFragment的内容和按钮
- 【DiskLruCache完全解析】Android(安卓)AdapterView图片硬盘缓存
- Android裁剪图片总结
- Android开发之旅:环境搭建及HelloWorld