帧动画Drawable Animation入门

Drawable Animation

Drawable animation lets you load a series of Drawable resources one after another to create an animation. This is a traditional animation in the sense that it is created with a sequence of different images, played in order, like a roll of film. TheAnimationDrawableclass
is the basis for Drawable animations.

Drawable animation是一个一个的加载一些列的图片来创建动画的,他是一种传统的动画,事实上就是一个不同图片的序列AnimationDrawable是Drawable
animations 的基类

While you can define the frames of an animation in your code, using theAnimationDrawableclass
API, it‘s more simply accomplished with a single XML file that lists the frames that compose the animation. The
XML file for this kind of animation belongs in the res/drawable/
directory of your Android project. In this case, the instructions are the order
and duration for each frame of the animation.

 虽然可以使用AnimationDrawable类在代码中定义帧动画,但最好是使用XML文件列出组成动画的所有帧。这个xml文件放在 res/drawable/目录下,事实上,所有的指令就是每一个帧动画的顺序和持续时间

The
XML file consists of an<animation-list> element as the root node and a series of child<item>
nodes that each define a frame: a drawable resource for the frame and the frame duration. Here‘s an example XML file for a Drawable animation:

 
 xml文件由根元素 <animation-list>和一系列子元素<item>组成,其中<item>定义了每个帧对应的图片和持续时间,如下:

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

This animation runs for just three frames. By
setting the android:oneshotattribute
of the list to true, it will cycle just once then stop and hold on the last frame. If
it is set false then the animation will loop. With this XML saved as rocket_thrust.xml
in the res/drawable/
directory of the project, it can be added as the background image to a View and then called to play. Here‘s
an example Activity, in which the animation is added to an ImageView and then animated when the screen is touched:

上面的例子是一个3帧动画, 通过将android:oneshot设置为true,那他就只会循环一次,并停留在最后一个帧上,若为false的话,就会循环运行

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.drawable.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);
}

It‘s important to note that the start() method called on theAnimationDrawable
cannot be called during the onCreate()
method of your Activity, because the AnimationDrawable is not yet fully attached to the window. If
you want to play the animation immediately, without requiring interaction, then you might want to call it from theonWindowFocusChanged()
method in your Activity, which will get called when Android brings your window into focus

注意:start()方法不能在你的Activity的onCreate()方法中调用,因为那时候AnimationDrawable尚未完全附着于窗口。如果你必须立刻调用动画,切没有交互的话,可以在onWindowFocusChanged()中调用。因为这个方法是窗口获得焦点时调用的

For
more information on the XML syntax, available tags and attributes, see Animation Resources.

时间: 2024-10-23 09:21:14

帧动画Drawable Animation入门的相关文章

Android动画Drawable Animation

Drawable Animation是逐帧动画,那么使用它之前必须先定义好各个帧.我们可以通过代码定义,也可以使用xml文件定义,一般使用后者.如下: <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="fals

视图动画View Animation入门

View Animation 你可以使用 view animation system 对一个view实现补间动画. A tween animation can perform a series of simple transformations (position, size, rotation, and transparency) on the contents of a View object.. Theanimation package provides all the classes u

Android 动画详解之Frame动画 (Drawable Animation)

Frame动画就像是gif图,通过一些静态图片来达到动画的效果. Android sdk中的AnimationDrawable就是专门针对Frame动画,当然Frame动画也可在java代码或者xml中写,但是提倡大家还是在xml中写,先上个效果图. <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?> <animation-list

Android 基础的三种动画 帧动画、补间动画、属性动画。

帧动画 drawable   animation 通过xml文件声明一个帧动画 ①在res目录下创建一个drawable目录 把用到的图片资源放到这个目录下 并且创建一个xml文件 根元素  animation-list可以设置一个属性 oneshot如果设置为true 动画只执行一次 执行之后停在最后一帧 animation-list 子元素item <?xml version="1.0" encoding="utf-8"?> 2. <anima

Android动画效果——1.帧动画2.补间动画3.跳转画面(三)

Android--动画效果1.帧动画2.补间动画3.跳转画面 插值器类 xml属性值 说明 LinearInterpolator @android:anim/linear_interpolatorr 动画以均匀的速度改变. AccelerateInterpolator @android:anim/accelerate_interpolator 在动画开始时改变速度较慢,然后开始加速. AccelerateDecelerateInterpolator @android:anim/accelerat

安卓动画(Animation)总结

首先,说一下,已经一个多月没写博客了,并没有偷懒,而是总觉得时间不够用,今天仔细想想,写一篇博客的时间还是可以挤出来的,只是自己没有安排好时间而已,毕竟这也算是对学过知识的一种总结,应该坚持,所以从今天开始,我又要继续了,对自己说一声,加油! 今天对Animation的学习做一个总结: 一直觉得动画很炫酷,学了动画之后才知道原来是这么回事! 安卓Animation分为两种: (1)帧动画  Frame Animation :一张图片就是一帧,很多帧的不停切换便构成了动画 (2)补间动画   Tw

Android属性动画Property Animation系列一之ValueAnimator

Android动画分类 市面上的很多APP都用到动画效果,动画效果用的好可以提升用户的体验度.那么Android系统都有哪些机制的动画呢? 1.逐帧动画(frame-by-frame animation).逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理. 2.补间动画(tweened animation)则是可以对View进行一系列的动画操作,包括淡入淡出.缩放.平移.旋转四种. 3.属性动画Property Ani

Android(java)学习笔记198:Android下的帧动画(Drawable Animation)

1.帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧的切换罢了. 2.Android如何实现播放帧动画如下: (1)首先我在网上下载了一张gif动态图片,如下: 这是一个gif动态图片,其实它是很多静态图片相同区域快速切换,我们怎么样把这个gif动态图片中的静态图片从中抽离出来? 这里我使用了一个小工具gifsplitter(大家可以百度在网上自行下

Android Animation 动画Demo(Frame逐帧动画)

上一篇介绍了Animation动画其一:Tween补间动画. 这篇文章接下来介绍Animation另一种动画形式:Frame逐帧动画. Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画.Frame动画可以被定义在XML文件中,也可以完全编码实现(后面会给出这两种实现方式的源代码Demo). 下面分别介绍: 一.定义在xml中实现: 实现效果图: 源代码: 布局文件:main.xml: <?xml version="1.0" encodin