安卓应用开发中,帧动画的实现实际上并不难,但对于初学者来说没有系统的设计过应用,感觉实现起来比较不容易,那么这篇博文就适合你来阅读。示例代码比较简单,我们先从布局文件开始讲起:
首先这个布局文件相当简单,我们通过一个垂直方向的线性布局对控制动画播放和暂停的按钮和放置帧图片的ImageView进行布局,代码的效果如图所示:(按钮下方空白处放置了ImageView)
XML布局代码如下:
对于Button和ImageView这两个基本组件我们不多做介绍了,接下来我们来讲讲怎么实现帧动画的关键步骤:
1、在项目中新建一个drawable文件夹:选定自己的项目,右键单击new->floder->输入名字drawable->文件夹创建成功!
2、向drawable文件夹中导入需要的图片:(1)使用Import导入:选择drawable文件夹->右键单击选择filesystem->选择需要导入的图片,成功!(2)直接将图片选中,拖入项目中;
3、关键代码amination.xml:选择drawable文件夹->右键单击->new->AndroidXmlFile->(ResourceType选择Drawable,RootElement选择animation-list,file输入animation(就是文件名));
具体代码如下:
android:oneshot="false"
android:visible="true">
android:drawable="@drawable/a1"
android:duration="100">
android:drawable="@drawable/a2"
android:duration="100">
android:drawable="@drawable/a3"
android:duration="100">
android:drawable="@drawable/a4"
android:duration="100">
android:drawable="@drawable/a5"
android:duration="100">
这上面的android:drawable参数是每帧图片,android:duration是每帧的时间长度(单位为毫秒);
接下来就是java程序了,非常简单:给了注释,看看
packagecom.vekaco.picamination;//包名
/*导包:可用ctrl+alt+o自动完成*/
importandroid.app.Activity;
importandroid.graphics.drawable.AnimationDrawable;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ImageView;
publicclassMainActivityextendsActivity{
ImageViewp_w_picpathView;
Buttonbutton;//按钮组件
AnimationDrawableanimationDrawable;//动画关键组件
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
p_w_picpathView=(ImageView)findViewById(R.id.p_w_picpath);
button=(Button)findViewById(R.id.button);
p_w_picpathView.setBackgroundResource(R.drawable.amination);
animationDrawable=(AnimationDrawable)p_w_picpathView.getBackground();
//获取Image的背景图片资源,然后才能让他一帧一帧动起来;
button.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
if(animationDrawable.isRunning()){
animationDrawable.stop();
}else{
animationDrawable.start();
}
}
});
//animationDrawable.start();
}
}
源代码附件