`

Android 动画专题--- 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://schemas.android.com/apk/res/android” android:oneshot=”true”>
<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″ />
</animation-list>

(上面的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();

最后还需要增加启动动画的代码: 

publicboolean onTouchEvent(MotionEventevent) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
rocketAnimation.start();
returntrue;
}
returnsuper.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() 停止当前动画
分享到:
评论

相关推荐

    玩转Android---2D图形及动画---Frame动画

    AnimationDrawable frameAnimation = (AnimationDrawable) getResources().getDrawable(R.drawable.your_animation); imageView.setBackground(frameAnimation); ``` 然后,为了启动帧动画,我们需要调用`start()`...

    Android---Frame动画

    为了控制动画的播放,你可以随时调用`frameAnimation.stop()`来停止动画,或者通过`frameAnimation.isRunning()`检查动画是否正在运行。 总结来说,Android中的帧动画是一种基于资源的简单动画方式,适用于一系列...

    Android代码-Android-Animation-Set

    Android Animation Detailed Tutorial / Android 动画详尽教程       中文讲解(README)请直接点击对应标题 English explanation(or readme), Do not click on the title, please click on the tip ...

    帧动画 frameanimation

    - 在XML文件中,定义`&lt;animation-list&gt;`标签作为根元素,设置`android:oneshot`属性来决定动画是否只播放一次(true为单次,false为循环)。 - 在`&lt;animation-list&gt;`内添加多个`&lt;item&gt;`标签,每个`&lt;item&gt;`代表一帧...

    Android 用Animation-list实现逐帧动画

    本篇将深入讲解如何利用`Animation-list`在Android中实现逐帧动画。 一、`Animation-list`基础 `Animation-list`是Android XML动画资源的一种类型,它定义了一组子项(通常为ImageView的源),这些子项按照指定的...

    android-custom-animation0.2.rar

    2. **帧动画(Frame Animation)**:通过AnimationDrawable类来实现,通过定义一系列的图片帧,按照指定的时间间隔依次显示,形成连续播放的动画效果。 3. **属性动画(Property Animation)**:如ObjectAnimator、...

    Android动画介绍-帧动画

    这个XML文件将包含`&lt;animation-list&gt;`标签,其中的每个`&lt;item&gt;`标签代表一帧,`android:drawable`属性指定了帧的图片资源,`android:duration`则定义了该帧持续的时间(以毫秒为单位): ```xml &lt;animation-list ...

    Android动画介绍-属性动画(1)

    属性动画系统不同于早期的帧动画(Frame Animation)和补间动画(Tween Animation),它不仅局限于视图的可见变化,而是可以在运行时改变任何对象的属性,并且可以产生实时反馈。这种灵活性使得开发者能够创造出更为...

    Android-Anim-Playground.zip

    2. **Frame Animation**(帧动画):通过连续播放一系列图片来实现动画效果,常用于制作 GIF 动画的替代方案。 3. **Layout Transition**(布局转换动画):当布局中的元素发生变化时自动触发的动画。 4. **Path ...

    Android Animation Frame逐帧动画

    在这个例子中,`animation-list`是动画列表的根元素,每个`item`代表一帧动画,`drawable`属性指定了帧对应的图片资源,`duration`属性定义了每帧持续的时间,单位为毫秒。 **使用Frame动画** 在Activity或View中...

    android之animation-list实现的简单粘稠加载效果使用demo

    `animation-list`是Android系统提供的一种用于创建帧动画的视图组件,常用来实现如加载、旋转、弹跳等效果。本教程将深入探讨如何使用`animation-list`来创建一个简单的粘稠加载效果。 一、animation-list概述 `...

    Android动画效果-切换Activity动画

    Android提供了两种类型的动画:补间动画(Tween Animation)和帧动画(Frame Animation)。补间动画用于改变视图属性,如平移、旋转、缩放和透明度等,而帧动画则主要用于播放一系列静态图片来创建连续的动作效果。...

    Android Animation Frame逐帧动画2

    Android提供了多种动画类型,其中包括 Tween 补间动画和 Frame 逐帧动画。本篇文章将主要聚焦于Frame动画,这是一种通过连续显示不同帧图片来创建动画效果的技术。 **Frame动画原理:** Frame动画基于一系列连续的...

    Android动画介绍-插值器

    本文将深入探讨Android动画系统中的一个重要组成部分——插值器(Interpolator)。 首先,我们需要理解Android动画的基本概念。Android提供两种主要类型的动画:补间动画(Tween Animation)和帧动画(Frame Animation)...

    Frame Animation 帧动画Demo

    在Android中,帧动画主要通过`&lt;animation-list&gt;`标签在XML资源文件中定义。这个`&lt;animation-list&gt;`是`&lt;selector&gt;`的一个子类,它允许我们指定一系列的`&lt;item&gt;`,每个`&lt;item&gt;`对应一帧图片。以下是一个基本的帧动画...

    详解android 中animation-list 动画的应用

    Android 中 animation-list 动画的应用详解 Android 中 animation-list 动画是一种常见的动画效果,通过使用 AnimationDrawable 来实现动画的播放。今天,我们将详细介绍 animation-list 动画在 Android 中的应用。...

    Android frame by frame animation动画显示

    在Android开发中,帧动画(Frame-by-Frame Animation)是一种常用的技术,用于创建连续的图像序列,模拟视频或gif动图的效果。这种动画通常适用于简单的移动、旋转或渐变效果,比如按钮按下反馈、加载指示器等。接...

    使用Animation-list实现等待加载动画效果

    `Animation-list`是Android系统提供的一种用于创建帧动画的视图,常用于实现等待加载、旋转图标等动态效果。本教程将详细讲解如何使用`Animation-list`来创建一个简单的等待加载动画。 首先,我们需要了解`...

    Frame Animation

    基本动画案例:Tween Animation, Frame Animation,介绍参考:http://blog.csdn.net/forwardyzk/article/details/42739281

Global site tag (gtag.js) - Google Analytics