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() |
停止当前动画
|
分享到:
相关推荐
AnimationDrawable frameAnimation = (AnimationDrawable) getResources().getDrawable(R.drawable.your_animation); imageView.setBackground(frameAnimation); ``` 然后,为了启动帧动画,我们需要调用`start()`...
为了控制动画的播放,你可以随时调用`frameAnimation.stop()`来停止动画,或者通过`frameAnimation.isRunning()`检查动画是否正在运行。 总结来说,Android中的帧动画是一种基于资源的简单动画方式,适用于一系列...
Android Animation Detailed Tutorial / Android 动画详尽教程 中文讲解(README)请直接点击对应标题 English explanation(or readme), Do not click on the title, please click on the tip ...
- 在XML文件中,定义`<animation-list>`标签作为根元素,设置`android:oneshot`属性来决定动画是否只播放一次(true为单次,false为循环)。 - 在`<animation-list>`内添加多个`<item>`标签,每个`<item>`代表一帧...
本篇将深入讲解如何利用`Animation-list`在Android中实现逐帧动画。 一、`Animation-list`基础 `Animation-list`是Android XML动画资源的一种类型,它定义了一组子项(通常为ImageView的源),这些子项按照指定的...
2. **帧动画(Frame Animation)**:通过AnimationDrawable类来实现,通过定义一系列的图片帧,按照指定的时间间隔依次显示,形成连续播放的动画效果。 3. **属性动画(Property Animation)**:如ObjectAnimator、...
这个XML文件将包含`<animation-list>`标签,其中的每个`<item>`标签代表一帧,`android:drawable`属性指定了帧的图片资源,`android:duration`则定义了该帧持续的时间(以毫秒为单位): ```xml <animation-list ...
属性动画系统不同于早期的帧动画(Frame Animation)和补间动画(Tween Animation),它不仅局限于视图的可见变化,而是可以在运行时改变任何对象的属性,并且可以产生实时反馈。这种灵活性使得开发者能够创造出更为...
2. **Frame Animation**(帧动画):通过连续播放一系列图片来实现动画效果,常用于制作 GIF 动画的替代方案。 3. **Layout Transition**(布局转换动画):当布局中的元素发生变化时自动触发的动画。 4. **Path ...
在这个例子中,`animation-list`是动画列表的根元素,每个`item`代表一帧动画,`drawable`属性指定了帧对应的图片资源,`duration`属性定义了每帧持续的时间,单位为毫秒。 **使用Frame动画** 在Activity或View中...
`animation-list`是Android系统提供的一种用于创建帧动画的视图组件,常用来实现如加载、旋转、弹跳等效果。本教程将深入探讨如何使用`animation-list`来创建一个简单的粘稠加载效果。 一、animation-list概述 `...
Android提供了两种类型的动画:补间动画(Tween Animation)和帧动画(Frame Animation)。补间动画用于改变视图属性,如平移、旋转、缩放和透明度等,而帧动画则主要用于播放一系列静态图片来创建连续的动作效果。...
Android提供了多种动画类型,其中包括 Tween 补间动画和 Frame 逐帧动画。本篇文章将主要聚焦于Frame动画,这是一种通过连续显示不同帧图片来创建动画效果的技术。 **Frame动画原理:** Frame动画基于一系列连续的...
本文将深入探讨Android动画系统中的一个重要组成部分——插值器(Interpolator)。 首先,我们需要理解Android动画的基本概念。Android提供两种主要类型的动画:补间动画(Tween Animation)和帧动画(Frame Animation)...
在Android中,帧动画主要通过`<animation-list>`标签在XML资源文件中定义。这个`<animation-list>`是`<selector>`的一个子类,它允许我们指定一系列的`<item>`,每个`<item>`对应一帧图片。以下是一个基本的帧动画...
Android 中 animation-list 动画的应用详解 Android 中 animation-list 动画是一种常见的动画效果,通过使用 AnimationDrawable 来实现动画的播放。今天,我们将详细介绍 animation-list 动画在 Android 中的应用。...
在Android开发中,帧动画(Frame-by-Frame Animation)是一种常用的技术,用于创建连续的图像序列,模拟视频或gif动图的效果。这种动画通常适用于简单的移动、旋转或渐变效果,比如按钮按下反馈、加载指示器等。接...
`Animation-list`是Android系统提供的一种用于创建帧动画的视图,常用于实现等待加载、旋转图标等动态效果。本教程将详细讲解如何使用`Animation-list`来创建一个简单的等待加载动画。 首先,我们需要了解`...
基本动画案例:Tween Animation, Frame Animation,介绍参考:http://blog.csdn.net/forwardyzk/article/details/42739281