`

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代码-Android-Animation-Set

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

    Frame Animation

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

    Android Animation Frame逐帧动画2

    上次提供了Animation动画其一Tween补间动画的源代码,这次提供其二Frame动画的源代码(以直接编码的形式实现Frame动画的Demo,笔者资源中另有以xml形式实现的Demo)。

    Android frame by frame animation动画显示

    Android frame by frame animation动画显示源代码

    Android动画之Animation

    Android动画之Animation的使用。包括变换动画Tween Animation,帧动画Frame Animation,布局动画Layout Animation,属性动画Property Animation

    Android Animation Frame逐帧动画

    上次提供了Animation动画其一Tween补间动画的源代码,这次提供其二Frame动画的源代码(以xml形式实现的Demo。笔者资源中另有以直接编码的形式实现Frame动画的Demo)。

    Android学习之笔记---Animation的使用

    Animation从总体来说可以分为两类: Tweened Animations:该类提供了旋转,移动,...Frame-By-Frame Animations:该类可以创建一个Drawable序列,这些Drawable可以按照指定的事件间隔一个一个显示,和动画片差不多。

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

    * 适用于animation-list 动画 * Created by _Smile on 2016/6/13. */ public class AnimImageViewLoader extends ImageView { private AnimationDrawable frameAnimation; public AnimImageViewLoader(Context ...

    FrameAnimation:适用于Android的高性能帧动画库

    FrameAnimation 用TextureView或SurfaceView 高性能播放帧动画,避免在很多帧的情况下使用AnimationDrawable带来的OOM和卡顿问题。 华为 mate 20X 1920×1080 24bit color JPG 201frames 24fps 测试效果 download ...

    android 补间动画(Tween Animation)和Frame Animation(帧动画)简单使用

    包含AlphaAnimation渐变效果 TranslateAnimation:位移渐变 ScaleAnimation:缩放渐变 RotateAnimation:旋转渐变 AnimationSet:组合渐变... frameAnimation:帧动画的xml和代码实现方式,非常适合新手朋友参考。

    Frame Animation 帧动画Demo

    自己写的一个帧动画Demo,没啥技术含量,只是方便需要的人。

    Android动画效果编程基础

    Android动画效果编程基础 Android的animation由四种类型组成 ndroid动画总结 逐帧动画(frame-by-frame animation),这种动画和GIF一样,一帧一帧的显示来组成动画效果;

    android 动画

    android 动画 简单使用 property animation view animation(tween animation)drawable animation(frame animation)

    Android的三种动画图形编程

    5、如果一切正常,那么可以分别看到帧动画(frame-by-frame)、布局动画(layout animation)和视图动画(view animation) 目的:动画效果可以让用户的体验感非常好。在“演示Android中的文字和图片特效控件的使用”资源...

    android动画

    android的基本动画分为四种:Tween Animation 变换动画、Frame Animation 帧动画、Layout Animation 布局动画、Property Animation 属性动画。

    FrameAnimation(安卓动画)

    这个 FrameAnimation(安卓动画) ,适合新手学习和借鉴。里面有wifi信号动画 和 DNF 狂战士 上挑加下斩动画

    Android程序技术:动画逐帧动画.pptx

    在打开的 New Drableable Resource File中,File name中输入创建文件的名称(注意,名称格式必须是小写字母英文,这里以frame为例),在Root element中录入animation-list 点击ok即可。;操作完成后,该目录里面出现...

    Android动画之逐帧动画(Frame Animation)基础学习

    在Android中,动画Animation的实现有两种方式:Tween Animation(补间动画)和Frame Animation(帧动画)。渐变动画是通过对场景里的对象不断做图像变换(平移、缩放、旋转等)产生动画效果。帧动画则是通过顺序播放...

    android基本动画大盘点

    android基本动画效果展示,包括activity动画、fragment动画、layout动画、tween animation、frame animation、属性动画

    FrameAnimation

    Android 动画,FrameAnimation, 帧动画,光晕效果

Global site tag (gtag.js) - Google Analytics