Frame Animation。在前面已经说过,Frame Animation是顺序播放事先做好的图像,跟电影类似。不同于animation package, Android SDK提供了另外一个类AnimationDrawable来定义、使用Frame Animation。
Frame Animation定义的动画放到/res/drawable下面。
在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;
我们看看具体的例子
<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/drawable/文件夹下,命名为rocket_thrust.xml
在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) {
rocketAnimation.start();
return true;
}
return super.onTouchEvent(event);
}
具体的AnimationDrawable类的介绍,可以参考sdk
https://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
获取、设置动画的属性
int getDuration() 获取动画的时长
int getNumberOfFrames() 获取动画的帧数
boolean isOneShot()获取oneshot属性
Void setOneShot(boolean 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开发中,动画是提升...总之,`FrameAnimation`是Android开发中实现简单动画的利器,尤其适合新手入门。通过掌握帧动画的原理和实践,开发者可以创建出各种生动有趣的动画效果,提升应用的趣味性和用户体验。
总结,Android帧动画是一个简单而实用的动画实现方式,尤其适合于新手入门。通过理解其工作原理,合理地创建和优化帧动画,可以在应用中实现各种生动有趣的动态效果。同时,源码阅读可以帮助开发者更深入地理解...
本文将深入探讨“逐帧动画入门”这一主题,基于提供的标签和压缩文件名,我们可以推测这是关于Android平台上的一个学习资源,可能包含了一系列的源代码示例。 逐帧动画是一种常见的动画形式,它通过连续播放一系列...
属性动画系统(Introduced in API level 11)更强大,能提供更多的控制和更逼真的动画效果,但Tween动画对于理解和入门Android动画系统来说是一个很好的起点。 学习和理解这些基本动画效果,开发者可以创建出更加...
`Android_ActionDrawable`文件名可能对应的就是一个帧动画资源,它包含了一系列帧图片,通过设置`<animation-list>`标签在XML中定义。 ```xml <animation-list xmlns:android=...
这份"Android简单2D动画源码.rar"包含了一些基本的2D动画实现,可以帮助开发者理解Android动画机制并快速入门。以下是对相关知识点的详细说明: 1. **动画类型**: - **补间动画(Tween Animation)**:通过改变对象...
Android 动画的介绍,入门级指引 3.0之前,android支持两种动画,tween animation和frame animation(补间动画与帧动画),3.0之后又增加了一种动画property animation
本篇文章将详细讲解Android动画的基础知识,尤其适合初学者入门。 1. **帧动画(Frame Animation)** 帧动画是通过播放一系列连续的静态图像来实现动画效果。在Android中,这可以通过`AnimationDrawable`类来实现。...
Android 动画效果二 Frame Animation 动画专题研究 Android新浪客户端开发教程(完整版)汇总大全 Android多媒体实例大汇集(源码,全) Android中利用画图类和线程画出闪烁的心形,送给亲爱的他 android自带的示例...
Android支持两种类型的动画:视图动画(View Animation)和属性动画(Property Animation)。视图动画主要用于改变视图的位置、大小、透明度等,但不实际改变视图的状态。而属性动画是Android 3.0引入的新特性,它可以...
Android动画可以分为多种类型,如帧动画(Frame Animation)、属性动画(Property Animation)以及视图动画(View Animation)。在这个例子中,我们可能主要涉及的是视图动画,因为它是最基础且易于理解的动画形式。...
这篇"第11条-Android动画/图形入门指南"将引导初学者踏入这个充满魔力的世界。Android提供了多种方式来实现图形绘制和动画效果,包括Java API、OpenGL以及Canvas等。让我们深入探讨这些技术。 首先,Java API中的...
这个实例不仅展示了如何创建简单的淡入淡出效果,还涉及到Android动画系统、Activity的生命周期管理和主题配置等多个知识点。通过深入理解和实践,开发者可以进一步定制更多复杂的动画效果,提升应用的整体品质。
- 讲解动画效果的实现,包括Tween Animation和Frame Animation。 17. **权限管理**: - 解释Android系统的权限管理机制,以及如何在运行时请求特定权限。 - 介绍Manifest文件中meta-data元素的用途。 18. **...
在Java中,我们可以使用帧动画(Frame Animation)来实现像素游戏的动态效果。通过定义一系列的图片并按顺序播放,形成角色行走、攻击等动作。 6. **用户交互**: Android提供了丰富的事件监听机制,如...
此外,你还可以学习到如何使用帧动画(Frame Animation)来播放一系列静态图像,模拟动态效果。 除此之外,游戏中的碰撞检测也是核心部分。你需要编写算法来判断坦克和炮弹是否碰撞,这可能涉及到坐标系统、几何...
- **Humanoid Animation**:针对人物角色的高级动画系统。 ##### 3. UI交互 - **Canvas**:UI界面的基础容器。 - **Button、Slider等UI元素**:创建用户交互控件。 - **Event System**:处理用户输入事件。 #### ...
Android提供了丰富的动画库,包括补间动画(Tween Animation)、帧动画(Frame Animation)和属性动画(Property Animation)。在"切水果"中,水果被切开的瞬间,可能会使用属性动画来改变水果的透明度和大小,模拟...