`
java-admin
  • 浏览: 1365680 次
  • 性别: 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逐帧动画2

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

    Android Animation Frame逐帧动画

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

    Frame Animation

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

    Android frame by frame animation动画显示

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

    Android Animation Demo

    Android Animation的简单Demo 相应博客地址:http://blog.csdn.net/u011268102/article/details/9707071

    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 ...

    Android Animation示例(View Animation, Drawable Animation)

    View Animation Only animate View objects If animate non-view objects, you have to implement your own code takes less time to setup and ...Load drawable resources and display them one frame after another

    Animation_Frame_Android_Code

    在代码中定义逐帧动画。WIFI信号显示。适用于初学者。

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

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

    Frame Animation 帧动画Demo

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

    Android动画之Animation

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

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

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

    FrameAnimation

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

    Android Animation动画(Tween动画,xml形式)

    该Demo,主要以xml形式实现了Animation动画中的Tween动画(另一种动画Frame动画Demo,稍后奉上),Tween动画的另一种实现形式是直接在代码中实现,相关Demo已上传,有需要的读者请到我的资源文件中下载即可。

    Animation_Frame_Android_XML

    在XML中定义逐帧动画。WIFI变换图标。

    Android 帧(frame)动画

    NULL 博文链接:https://wangleyiang.iteye.com/blog/1714229

    FrameAnimation(安卓动画)

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

    android 动画

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

    FrameAnimation.zip

    Andorid帧动画,也称为Frame动画,为Android3.0前的主要动画之一,这里主要实现了静态、动态实现的俩种方式,顺带实现了当前美团中使用的加载中... 小人奔跑动画 ~

    android 帧动画

    帧动画 Frame Animation Frame Animation Frame Animation

Global site tag (gtag.js) - Google Analytics