在上一篇中,介绍了Tween Animation,这里我们将介绍另外一种动画Frame Animation。
Frame Animation是顺序播放事先做好的图像,跟电影类似。
不同于animation package, Android SDK提供了另外一个类AnimationDrawable来定义来使用Frame Animation。
SDK位置:
Tween animation : android.view.animation 包
Frame animation : android.graphics.drawable.AnimationDrawable 类
1.Frame Animation格式定义
Frame Animation可以在XML
Resource定义(还是存放到res\anim文件夹下),也可以使用AnimationDrawable中的API定义。由于Tween
Animation与Frame Animation有着很大的不同,因此XML定义的格式也完全不一样。
其格式是:首先是animation-list根节点,animation-list根节点中包含多个item子节点,每个item节点定义一帧动画:当前帧的drawable资源和当前帧持续的时间。下面对节点的元素加以说明:
XML属性 |
说明 |
drawable |
当前帧引用的drawable资源 |
duration |
当前帧显示的时间(毫秒为单位) |
oneshot |
如果为true,表示动画只播放一次停止在最后一帧上,如果设置为false表示动画循环播放。 |
variablePadding |
If true, allows the drawable’s padding to change based on the current state that is selected. |
visible |
规定drawable的初始可见性,默认为flase; |
2.案例分析
(1)定义XML,保存在res/anim/文件夹下,命名为rocket_thrust.xml
<animation-list xmlns:android=”http:
|
<item android:drawable=”@drawable/rocket_thrust1″ android:duration=”200″ />
|
<item android:drawable=”@drawable/rocket_thrust2″ android:duration=”200″ />
|
<item android:drawable=”@drawable/rocket_thrust3″ android:duration=”200″ />
|
(上面的XML就定义了一个Frame Animation,其包含3帧动画,3帧动画中分别应用了drawable中的3张图片:rocket_thrust1,rocket_thrust2,rocket_thrust3,每帧动画持续200毫秒。)
(2)在java类中的OnCreate()中增加如下代码:
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
|
rocketImage.setBackgroundResource(R.anim.rocket_thrust);
|
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
|
最后还需要增加启动动画的代码:
public
boolean onTouchEvent(MotionEvent
event
) {
|
if
(
event
.getAction() == MotionEvent.ACTION_DOWN) {
|
return
super.onTouchEvent(
event
);
|
码运行的结果想必大家应该就知道了(3张图片按照顺序的播放一次)。
不过有一点需要强调的是:启动Frame
Animation动画的代码rocketAnimation.start();不能在OnCreate()中,因为在OnCreate()中
AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。
3.AnimationDrawable的介绍
AnimationDrawable
|
获取、设置动画的属性 |
|
int getDuration() |
获取动画的时长 |
int getNumberOfFrames() |
获取动画的帧数 |
boolean isOneShot()
Void setOneShot(boolean oneshot)
|
获取oneshot属性
设置oneshot属性 |
void inflate(Resurce r,XmlPullParser p,
AttributeSet attrs) |
|
增加、获取帧动画 |
Drawable getFrame(int index) |
获取某帧的Drawable资源 |
void addFrame(Drawable frame,int duration) |
为当前动画增加帧(资源,持续时长) |
动画控制 |
void start() |
开始动画 |
void run() |
外界不能直接掉调用,使用start()替代 |
boolean isRunning() |
当前动画是否在运行 |
void stop() |
停止当前动画 |
Frame Animation的定义、使用比较简单,在这里已经详细介绍完了,更加深入的学习还是到Android SDK去仔细了解吧,在Android SDK中也包含很多这方面的例子程序。
分享到:
相关推荐
AnimationDrawable frameAnimation = (AnimationDrawable) getResources().getDrawable(R.drawable.your_animation); imageView.setBackground(frameAnimation); ``` 然后,为了启动帧动画,我们需要调用`start()`...
Android Animation Detailed Tutorial / Android 动画详尽教程 中文讲解(README)请直接点击对应标题 English explanation(or readme), Do not click on the title, please click on the tip ...
为了控制动画的播放,你可以随时调用`frameAnimation.stop()`来停止动画,或者通过`frameAnimation.isRunning()`检查动画是否正在运行。 总结来说,Android中的帧动画是一种基于资源的简单动画方式,适用于一系列...
- 在XML文件中,定义`<animation-list>`标签作为根元素,设置`android:oneshot`属性来决定动画是否只播放一次(true为单次,false为循环)。 - 在`<animation-list>`内添加多个`<item>`标签,每个`<item>`代表一帧...
Android提供了多种动画类型,其中包括 Tween 补间动画和 Frame 逐帧动画。本篇文章将主要聚焦于Frame动画,这是一种通过连续显示不同帧图片来创建动画效果的技术。 **Frame动画原理:** Frame动画基于一系列连续的...
在这个例子中,`animation-list`是动画列表的根元素,每个`item`代表一帧动画,`drawable`属性指定了帧对应的图片资源,`duration`属性定义了每帧持续的时间,单位为毫秒。 **使用Frame动画** 在Activity或View中...
本篇将深入讲解如何利用`Animation-list`在Android中实现逐帧动画。 一、`Animation-list`基础 `Animation-list`是Android XML动画资源的一种类型,它定义了一组子项(通常为ImageView的源),这些子项按照指定的...
在Android中,帧动画主要通过`<animation-list>`标签在XML资源文件中定义。这个`<animation-list>`是`<selector>`的一个子类,它允许我们指定一系列的`<item>`,每个`<item>`对应一帧图片。以下是一个基本的帧动画...
在Android开发中,帧动画(Frame-by-Frame Animation)是一种常用的技术,用于创建连续的图像序列,模拟视频或gif动图的效果。这种动画通常适用于简单的移动、旋转或渐变效果,比如按钮按下反馈、加载指示器等。接...
基本动画案例:Tween Animation, Frame Animation,介绍参考:http://blog.csdn.net/forwardyzk/article/details/42739281
2. **帧动画(Frame Animation)**:通过AnimationDrawable类来实现,通过定义一系列的图片帧,按照指定的时间间隔依次显示,形成连续播放的动画效果。 3. **属性动画(Property Animation)**:如ObjectAnimator、...
Android动画主要分为两大类:Tween动画(渐变动画)和Frame-by-frame动画(逐帧动画)。这两种动画形式能够满足开发者对于基本动画效果的需求。 #### 二、XML中的动画定义 Android动画可以通过XML文件定义,并在...
`Animation-list`是Android系统提供的一种用于创建帧动画的视图,常用于实现等待加载、旋转图标等动态效果。本教程将详细讲解如何使用`Animation-list`来创建一个简单的等待加载动画。 首先,我们需要了解`...
在Android中,帧动画是通过`<animation-list>`标签在XML资源文件中定义的。 - **应用场景**:帧动画常用于加载指示器、按钮点击反馈、滑动刷新效果等场景,为用户提供视觉上的动态体验。 2. **创建帧动画资源文件*...
3. **帧动画(Frame Animation)**:虽然帧动画不是属性动画的一部分,但它是Android动画体系中的一个关键元素。帧动画通过连续播放一系列图像来创建动画效果,常用于简单的2D游戏或加载指示器。`AnimationDrawable`是...
帧动画是Android动画体系的基础部分,理解并熟练掌握它的使用,可以帮助开发者快速实现各种动态效果,提升应用的视觉体验。不过,随着Android系统的演进,更多高效、灵活的动画机制如`ValueAnimator`、`...
2. 编辑XML文件,定义`animation-list`元素,并设置`android:oneshot="false"`,以使动画无限循环。 ```xml <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false...
在Android开发中,动画是提升...通过分析这个源码,开发者不仅可以学习到Android动画的基本用法,还能深入了解如何结合实际场景创建生动有趣的动画效果。这个示例对于提升Android应用的用户体验有着很好的参考价值。
Animation从总体来说可以分为两类: Tweened Animations:该类提供了旋转,移动,...Frame-By-Frame Animations:该类可以创建一个Drawable序列,这些Drawable可以按照指定的事件间隔一个一个显示,和动画片差不多。