Android帧动画的实现

安卓应用开发中,帧动画的实现实际上并不难,但对于初学者来说没有系统的设计过应用,感觉实现起来比较不容易,那么这篇博文就适合你来阅读。示例代码比较简单,我们先从布局文件开始讲起:

首先这个布局文件相当简单,我们通过一个垂直方向的线性布局对控制动画播放和暂停的按钮和放置帧图片的ImageView进行布局,代码的效果如图所示:(按钮下方空白处放置了ImageView)

https://img-blog.csdn.net/20130929224006812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdmVrYWNv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

XML布局代码如下:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="@string/button"/>

<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/action_settings"/>

</LinearLayout>

对于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(就是文件名));

具体代码如下:

<?xmlversion="1.0"encoding="utf-8"?>
<animation-listxmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false"
android:visible="true">

<item
android:drawable="@drawable/a1"
android:duration="100">
</item>
<item
android:drawable="@drawable/a2"
android:duration="100">
</item>
<item
android:drawable="@drawable/a3"
android:duration="100">
</item>
<item
android:drawable="@drawable/a4"
android:duration="100">
</item>
<item
android:drawable="@drawable/a5"
android:duration="100">
</item>

</animation-list>

这上面的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{
ImageViewimageView;
Buttonbutton;//按钮组件
AnimationDrawableanimationDrawable;//动画关键组件

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=(ImageView)findViewById(R.id.image);
button=(Button)findViewById(R.id.button);

imageView.setBackgroundResource(R.drawable.amination);
animationDrawable=(AnimationDrawable)imageView.getBackground();

//获取Image的背景图片资源,然后才能让他一帧一帧动起来;
button.setOnClickListener(newOnClickListener(){

@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
if(animationDrawable.isRunning()){
animationDrawable.stop();
}else{
animationDrawable.start();
}
}
});
//animationDrawable.start();
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值