Android 用Animation-list实现逐帧动画

本文介绍如何在Android中使用帧动画实现顺序与倒序播放效果,包括准备图片资源、创建动画列表文件、定义布局及Activity交互逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自:http://www.open-open.com/lib/view/open1344504946405.html

第一步:先上图片素材,以下素材放到res/drawable目录下:

图片素材:

Android 用Animation-list实现逐帧动画

Android 用Animation-list实现逐帧动画

Android 用Animation-list实现逐帧动画

Android 用Animation-list实现逐帧动画

Android 用Animation-list实现逐帧动画

Android 用Animation-list实现逐帧动画

文件名称:

icon1.png

icon1.png

icon1.png

icon1.png

icon1.png

icon1.png

第二步:上动画Animation-list帧布局文件,有2个,一个是按顺序显示动画,一个是倒序显示动画,文件存放在res/drawable目录下

顺序显示动画文件:animation1.xml

01 <?xmlversion="1.0"encoding="utf-8"?>
02<!--
03 根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画
04 根标签下,通过item标签对动画中的每一个图片进行声明
05 android:duration 表示展示所用的该图片的时间长度
06 -->
07 <animation-list
08 xmlns:android="http://schemas.android.com/apk/res/android"
09 android:oneshot="true"
10 >
11 <itemandroid:drawable="@drawable/icon1"android:duration="150"></item>
12 <itemandroid:drawable="@drawable/icon2"android:duration="150"></item>
13 <itemandroid:drawable="@drawable/icon3"android:duration="150"></item>
14 <itemandroid:drawable="@drawable/icon4"android:duration="150"></item>
15 <itemandroid:drawable="@drawable/icon5"android:duration="150"></item>
16 <itemandroid:drawable="@drawable/icon6"android:duration="150"></item>
17 </animation-list>

倒序显示动画文件:animation2.xml

01 <?xmlversion="1.0"encoding="utf-8"?>
02<!--
03 根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画
04 根标签下,通过item标签对动画中的每一个图片进行声明
05 android:duration 表示展示所用的该图片的时间长度
06 -->
07 <animation-list
08 xmlns:android="http://schemas.android.com/apk/res/android"
09 android:oneshot="true"
10 >
11 <itemandroid:drawable="@drawable/icon6"android:duration="150"></item>
12 <itemandroid:drawable="@drawable/icon5"android:duration="150"></item>
13 <itemandroid:drawable="@drawable/icon4"android:duration="150"></item>
14 <itemandroid:drawable="@drawable/icon3"android:duration="150"></item>
15 <itemandroid:drawable="@drawable/icon2"android:duration="150"></item>
16 <itemandroid:drawable="@drawable/icon1"android:duration="150"></item>
17 </animation-list>


第三步:上布局文件,放在res/layout目录下,文件名main.xml

01 <?xmlversion="1.0"encoding="utf-8"?>
02 <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
03 android:layout_width="fill_parent"
04 android:layout_height="fill_parent"
05 android:orientation="vertical">
06
07 <ImageViewandroid:id="@+id/animationIV"
08 android:layout_width="wrap_content"
09 android:layout_height="wrap_content"
10 android:padding="5px"
11 android:src="@drawable/animation1"/>
12
13 <Buttonandroid:id="@+id/buttonA"
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:padding="5px"
17 android:text="顺序显示"/>
18
19 <Buttonandroid:id="@+id/buttonB"
20 android:layout_width="wrap_content"
21 android:layout_height="wrap_content"
22 android:padding="5px"
23 android:text="停止"/>
24
25 <Buttonandroid:id="@+id/buttonC"
26 android:layout_width="wrap_content"
27 android:layout_height="wrap_content"
28 android:padding="5px"
29 android:text="倒序显示"/>
30
31 </LinearLayout>

第四步:上Activity文件,文件名:MainActivity.java

01 packageorg.shuxiang.test;
02
03 importandroid.app.Activity;
04 importandroid.graphics.drawable.AnimationDrawable;
05
06 importandroid.os.Bundle;
07 importandroid.view.View;
08 importandroid.view.View.OnClickListener;
09 importandroid.view.Window;
10 importandroid.widget.Button;
11 importandroid.widget.ImageView;
12
13 publicclassActivity10extendsActivity
14{
15 privateImageView animationIV;
16 privateButton buttonA, buttonB, buttonC;
17 privateAnimationDrawable animationDrawable;
18 @Override
19 publicvoidonCreate(Bundle savedInstanceState) {
20 super.onCreate(savedInstanceState);
21 requestWindowFeature(Window.FEATURE_NO_TITLE);
22 setContentView(R.layout.test10);
23
24
25 animationIV = (ImageView) findViewById(R.id.animationIV);
26 buttonA = (Button) findViewById(R.id.buttonA);
27 buttonB = (Button) findViewById(R.id.buttonB);
28 buttonC = (Button) findViewById(R.id.buttonC);
29
30 buttonA.setOnClickListener(newOnClickListener()
31 {
32 @Override
33 publicvoidonClick(View v) {
34 // TODO Auto-generated method stub
35 animationIV.setImageResource(R.drawable.animation1);
36 animationDrawable = (AnimationDrawable) animationIV.getDrawable();
37 animationDrawable.start();
38 }
39
40 });
41
42 buttonB.setOnClickListener(newOnClickListener()
43 {
44 @Override
45 publicvoidonClick(View v) {
46 // TODO Auto-generated method stub
47 animationDrawable = (AnimationDrawable) animationIV.getDrawable();
48 animationDrawable.stop();
49 }
50
51 });
52
53 buttonC.setOnClickListener(newOnClickListener()
54 {
55 @Override
56 publicvoidonClick(View v) {
57 // TODO Auto-generated method stub
58 animationIV.setImageResource(R.drawable.animation2);
59 animationDrawable = (AnimationDrawable) animationIV.getDrawable();
60 animationDrawable.start();
61 }
62 });
63 }
64}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值