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:
|
<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″ />
|
(上面的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();
|
最后还需要增加启动动画的代码:
public boolean
onTouchEvent(MotionEvent event )
{
|
if ( event .getAction()
== MotionEvent.ACTION_DOWN) {
|
return super.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 Animation Detailed Tutorial / Android 动画详尽教程 中文讲解(README)请直接点击对应标题 English explanation(or readme), Do not click on the title, please click on the tip ...
基本动画案例:Tween Animation, Frame Animation,介绍参考:http://blog.csdn.net/forwardyzk/article/details/42739281
上次提供了Animation动画其一Tween补间动画的源代码,这次提供其二Frame动画的源代码(以直接编码的形式实现Frame动画的Demo,笔者资源中另有以xml形式实现的Demo)。
Android frame by frame animation动画显示源代码
Android动画之Animation的使用。包括变换动画Tween Animation,帧动画Frame Animation,布局动画Layout Animation,属性动画Property Animation
上次提供了Animation动画其一Tween补间动画的源代码,这次提供其二Frame动画的源代码(以xml形式实现的Demo。笔者资源中另有以直接编码的形式实现Frame动画的Demo)。
Animation从总体来说可以分为两类: Tweened Animations:该类提供了旋转,移动,...Frame-By-Frame Animations:该类可以创建一个Drawable序列,这些Drawable可以按照指定的事件间隔一个一个显示,和动画片差不多。
* 适用于animation-list 动画 * Created by _Smile on 2016/6/13. */ public class AnimImageViewLoader extends ImageView { private AnimationDrawable frameAnimation; public AnimImageViewLoader(Context ...
FrameAnimation 用TextureView或SurfaceView 高性能播放帧动画,避免在很多帧的情况下使用AnimationDrawable带来的OOM和卡顿问题。 华为 mate 20X 1920×1080 24bit color JPG 201frames 24fps 测试效果 download ...
包含AlphaAnimation渐变效果 TranslateAnimation:位移渐变 ScaleAnimation:缩放渐变 RotateAnimation:旋转渐变 AnimationSet:组合渐变... frameAnimation:帧动画的xml和代码实现方式,非常适合新手朋友参考。
自己写的一个帧动画Demo,没啥技术含量,只是方便需要的人。
Android动画效果编程基础 Android的animation由四种类型组成 ndroid动画总结 逐帧动画(frame-by-frame animation),这种动画和GIF一样,一帧一帧的显示来组成动画效果;
android 动画 简单使用 property animation view animation(tween animation)drawable animation(frame animation)
5、如果一切正常,那么可以分别看到帧动画(frame-by-frame)、布局动画(layout animation)和视图动画(view animation) 目的:动画效果可以让用户的体验感非常好。在“演示Android中的文字和图片特效控件的使用”资源...
android的基本动画分为四种:Tween Animation 变换动画、Frame Animation 帧动画、Layout Animation 布局动画、Property Animation 属性动画。
这个 FrameAnimation(安卓动画) ,适合新手学习和借鉴。里面有wifi信号动画 和 DNF 狂战士 上挑加下斩动画
在打开的 New Drableable Resource File中,File name中输入创建文件的名称(注意,名称格式必须是小写字母英文,这里以frame为例),在Root element中录入animation-list 点击ok即可。;操作完成后,该目录里面出现...
在Android中,动画Animation的实现有两种方式:Tween Animation(补间动画)和Frame Animation(帧动画)。渐变动画是通过对场景里的对象不断做图像变换(平移、缩放、旋转等)产生动画效果。帧动画则是通过顺序播放...
android基本动画效果展示,包括activity动画、fragment动画、layout动画、tween animation、frame animation、属性动画
Android 动画,FrameAnimation, 帧动画,光晕效果