`
java-admin
  • 浏览: 1388910 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

Android Animation(Frame Animation)

阅读更多

http://hi.baidu.com/baibaixiaoyao/blog/item/5c9e92529b759c1d0cf3e3b0.html

 

[不完全转载,原文:http://www.cnblogs.com/feisky/archive/2010/01/11/1644482.html]
Frame Animation
Frame Animation是顺序播放事先做好的图像,跟电影类似。不同于animation package, Android SDK提供了另外一个类AnimationDrawable来定义、使用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;

 

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() 停止当前动画

 

下面就给个具体的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毫秒。
然后我们将以上XML保存在res/anim/文件夹下,命名为rocket_thrust.xml,显示动画的代码:
AnimationDrawable rocketAnimation;

public void onCreate(Bundle savedInstanceState) {
 
super.onCreate(savedInstanceState);
  setContentView
(R.layout.main);

 
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) {
    rocketAnimation
.start();
   
return true;
 
}
 
return super.onTouchEvent(event);
}

代码运行的结果:3张图片按照顺序的播放一次.
有一点需要强调的是:启动Frame Animation动画的代码rocketAnimation.start();不能在OnCreate()中,因为在OnCreate()中AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。这里实在拖曳事件中实现的。(这里现在main.xml里定义一个ImageView,可以先不指定src,运行时会自动绑定)
下面,阅读Android SDK中对AnimationDrawable的介绍,有个简单的了解:

分享到:
评论

相关推荐

    Android Animation Frame逐帧动画

    AnimationDrawable frameAnimation = (AnimationDrawable) getResources().getDrawable(R.anim.frame_animation); imageView.setBackground(frameAnimation); frameAnimation.start(); ``` **控制动画行为** 除了...

    Android Animation Frame逐帧动画2

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

    Android Animation Demo

    这篇详细讲解将围绕标题和描述中的知识点展开,包括Tween Animation(补间动画)和Frame Animation(帧动画),帮助开发者理解和实践Android动画。 首先,我们来探讨 Tween Animation。Tween Animation是Android中...

    Frame Animation

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

    帧动画 frameanimation

    - 在布局文件中设置一个ImageView,其背景资源引用帧动画的XML文件:`android:background="@anim/frame_animation"`。 4. **监听帧动画状态**: - 可以通过实现`Animation.AnimationListener`接口来监听动画的...

    Android frame by frame animation动画显示

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

    Frame Animation 帧动画Demo

    在上述代码中,`@drawable/frame1`、`@drawable/frame2`等表示每一帧的图片资源,`android:duration`则是每帧显示的时间,单位为毫秒。帧的顺序和持续时间决定了动画的播放效果。 要使用这个动画,我们需要在Java...

    Android Animation动画资源文件

    Android Animation主要分为两大类:补间动画(Tween Animation)和帧动画(Frame Animation)。本资源文件主要关注补间动画,这是一种通过改变对象属性(如位置、大小、透明度等)在一段时间内平滑过渡的动画效果。 补...

    android Animation动画实现loading效果

    Android Animation系统提供了多种动画类型,包括属性动画(Property Animation)、补间动画(Tween Animation)和帧动画(Frame Animation)。属性动画是Android 3.0(API Level 11)引入的,它允许对对象的任何属性...

    Android Animation Demo合集

    1. **帧动画(Frame Animation)**:帧动画是通过连续播放一系列静态图像来创建动态效果。在Android中,可以使用`&lt;animation-list&gt;`标签在XML资源文件中定义帧动画,并通过`AnimationDrawable`类进行控制。例如,一个...

    FrameAnimation

    FrameAnimation是Android开发中一种常见的动画形式,主要应用于创建序列帧动画。在Android系统中,开发者可以使用`AnimationDrawable`类来实现帧动画效果。这种动画类型非常适合展示一系列连续的图像,比如游戏中的...

    Android Animation相关

    除了基本的补间动画,Android还提供了框架动画(Frame Animation),通过播放一系列图像来模拟动画效果。这通常用于制作简单的序列动画,如loading图标等。在`res/anim`目录下创建一个`frame_animation.xml`文件,...

    Android代码-Android-Animation-Set

    Drawable Animation / 帧动画 / Frame 动画 English explanation can go to read this article Ⅲ. Property Animation / 属性动画 English explanation can go to read this article Ⅳ. Ripple Effect / Touch ...

    Androidanimation.doc

    Android 动画主要分为两类:Tweened Animation(渐变动画)和Frame-by-Frame Animation(逐帧动画)。这两种动画方式各有特点,可以根据不同的需求选择使用。 Tweened Animation 包括四种基本类型:AlphaAnimation...

    Sample_2_9.rar_android_android animation_android image_android 游

    AnimationDrawable frameAnimation = (AnimationDrawable) imageView.getBackground(); imageView.post(new Runnable() { @Override public void run() { frameAnimation.start(); } }); ``` 此外,Android还...

    Android中的Animation的使用

    Android提供了多种动画机制,包括帧动画(Frame Animation)、补间动画(Tween Animation)、属性动画(Property Animation)。本篇将详细介绍Android中的Animation使用,结合源码分析,以及一些实用工具的运用。 ...

    Android animation_list demo,imageview实现动画效果

    `animation_list`是Android系统提供的一种用于在ImageView中实现帧动画的资源类型,它允许开发者轻松地创建连续播放的图像序列,从而创造出动态效果。本篇文章将深入讲解如何使用`animation_list`来实现ImageView的...

    Animation_Frame_Android_XML

    "Animation_Frame_Android_XML"这个主题主要关注如何使用XML来定义逐帧动画,特别是实现WIFI图标的变化效果。逐帧动画是一种常见的动画形式,它通过连续播放一系列静态图像来创造动态视觉效果,类似于传统的电影制作...

    Android animation图片移动效果.zip

    AnimationDrawable frameAnimation = (AnimationDrawable) imageView.getBackground(); frameAnimation.start(); // 开始动画 ``` 5. **使用Transition API** 对于更复杂的场景,如在布局变换中移动图片,可以...

Global site tag (gtag.js) - Google Analytics