`
dss16694
  • 浏览: 148455 次
社区版块
存档分类
最新评论

Android画图学习总结-Animation(下)

 
阅读更多

Android画图学习总结(四)——Animation(上)中,我们详细介绍了Tween  Aniamation,这里我们将介绍另外一种动画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;

下面就给个具体的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,显示动画的代码,如下:在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);
}

代码运行的结果想必大家应该就知道了(3张图片按照顺序的播放一次),不过有一点需要强调的是:启动Frame Animation动画的代码rocketAnimation.start();不能在OnCreate()中,因为在OnCreate()中AnimationDrawable还没有完全的与ImageView绑定,在OnCreate()中启动动画,就只能看到第一张图片。

下面,阅读Android SDK中对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() 停止当前动画

总结说明

Frame Animation的定义、使用比较简单,在这里已经详细介绍完了,更加深入的学习还是到Android SDK去仔细了解吧,在Android SDK中也包含很多这方面的例子程序。

 

分享到:
评论

相关推荐

    android画图总结

    【Android画图学习总结(四)——Animation.doc】讲述了Android的动画系统。在Android中,有两种主要的动画类型:属性动画(Property Animation)和视图动画(View Animation)。视图动画主要改变视图的位置、大小、...

    android画图总结.pdf

    本文将详细介绍Android画图技术的核心知识点,包括资源的获取、Bitmap、Drawable、Animation以及Paint等方面的内容。 #### 二、资源的获取 在开始画图之前,我们需要了解如何在Android应用中获取资源。Android应用...

    Android画图学习笔记

    ### Android画图学习笔记知识点概览 #### 一、Android画图基础知识介绍 - **类的简介** - 在Android开发过程中,对于图形绘制的理解不仅仅局限于Google提供的官方文档,还需要深入掌握Java的基础类库,尤其是那些...

    Android画图学习.pdf

    ### Android画图学习知识点 #### 一、概览与背景 在进行Android开发的过程中,开发者可能会遇到关于如何处理图形和图像的问题。这部分内容虽然不是Android SDK文档的重点,但对于希望深入理解Android图形绘制机制...

    Android画图学习

    ### Android画图学习知识点概述 #### 一、类的简介 **1.1 获取资源** 在Android开发过程中,经常会涉及到从资源文件(res目录)中获取各种类型的资源,如图片、字符串等。这部分功能主要通过`android.content.res....

    android 画图集合.zip

    Android提供了多种动画机制,如Tween Animation(属性动画)、ValueAnimator和ObjectAnimator,可以用于创建平移、旋转、缩放等动态效果,使画图更加生动有趣。 9. **示例项目分析** - "20120529105218423.rar...

    Android画图(以画图为例说明如何使用SDK)

    ### Android画图学习知识点 #### 一、概览与背景 在深入了解Android画图之前,首先需要明确几个关键概念和背景信息。对于Android开发者而言,尤其是对于那些从C++转向Android开发的程序员们来说,理解Android SDK...

    Android画图程序源码.zip

    这个"Android画图程序源码.zip"很可能是包含了这样一个应用程序的完整源代码,可以帮助开发者学习和理解如何在Android系统上创建图形界面并实现绘图功能。下面,我们将深入探讨Android画图程序开发中的关键知识点。 ...

    android绘图 自定义组件

    总结来说,Android绘图与自定义组件的结合是Android开发中的高级技能,它不仅能满足独特的界面设计需求,还能提升应用的用户体验。通过熟练掌握这些技术,开发者可以创造出富有创新和吸引力的移动应用。

    android开发资料大全

    最无私的Android资料(书籍+代码)分享[总结] Android中文帮助教程(非常合适新手入门) android程序编写及调试新手入门 大家一起学Android(Windows篇) android入门与提高必看指南 Android入门逆引手册 Android...

    android应用源码图片放大缩小旋转涂鸦源码.zip

    - Animation:Android中的动画系统,可以用于实现平滑的图片旋转效果。 3. **手势识别**: - ScaleGestureDetector:检测双指缩放手势,允许用户通过捏合手势放大或缩小图片。 - RotateGestureDetector:检测...

    Android-这是一个自定义LoadingView库

    "Android-这是一个自定义LoadingView库" 指的是一款专为Android设计的加载视图库,它提供了一系列可定制化的加载动画效果,以满足开发者在各种场景下的需求。这类库通常包含了丰富的预设样式和方便的API,使得开发者...

    android各种动画套用

    总结起来,Android的动画机制和画图功能为开发者提供了丰富的工具来构建动态、互动的应用。通过理解并熟练运用视图动画、属性动画、动画集合、Transition框架,以及Canvas和Paint类,开发者可以在画图应用中创造出...

    android自定义控件绘图

    总结来说,Android自定义控件绘图是开发者展现创意和技术实力的重要途径。通过深入理解和实践这些知识点,你可以创造出独特的UI元素,提高应用的用户体验。在实践中不断探索,将使你在Android开发领域更加游刃有余。

    android 动画 碰撞矩形

    Android提供了多种动画实现方式,包括帧动画(Frame Animation)、补间动画(Tween Animation)、属性动画(Property Animation)等。对于描述中的移动矩形,最适用的是属性动画,因为它可以实时改变对象的属性,如...

    android绘图机制与动画机制Demos

    总结来说,Android的绘图机制和动画机制是构建动态、美观用户界面的关键工具。通过实例项目"MyDrawLearnProject",初学者可以直观地了解和实践这些知识,提高自己的开发技能。同时,深入理解这些机制,也有助于...

    android界面效果全汇总

    Android画图之Matrix `Matrix`是Android图形系统中的一个工具类,用于在Canvas上进行图像变换。`Matrix`类提供了一系列的方法来实现图像的平移、缩放、旋转和倾斜等操作。在自定义View绘图时,可以利用`Matrix`对...

    android小游戏“打飞机(雷电)”源码 注释很详细

    在Android中,我们通常使用Canvas进行图形绘制,这是Android提供的一个用于在屏幕上画图的类。在"打飞机(雷电)"游戏中,每一架飞机、子弹、敌机以及各种特效都是通过Canvas进行绘制的。开发者通过重写View的onDraw...

    Android版本的连连看源码

    Android的`Animation`类族可以实现平移、旋转、缩放等动画效果。 10. **调试与测试**:开发过程中,使用Android Studio的调试工具对代码进行断点调试,找出并修复错误至关重要。同时,编写单元测试和UI测试确保游戏...

Global site tag (gtag.js) - Google Analytics