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

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

 
阅读更多

随着对Drewable的深入了解,发现了Drawable更加强大的功能:显示Animation。Android SDK介绍了2种Animation:

  • Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果
  • Frame Animation:顺序播放事先做好的图像,跟电影类似

在使用Animation前,我们先学习如何定义Animation,这对我们使用Animation会有很大的帮助。Animation是以XML格式定义的,定义好的XML文件存放在res\anim中。由于Tween Animation与Frame Animation的定义、使用都有很大的差异,我们将分开介绍,本篇幅中介绍Tween Animation的定义与使用,后续篇幅再详细介绍Frame Animation。按照XML文档的结构【父节点,子节点,属性】来介绍Tween Animation,其由4种类型:

  • Alpha:渐变透明度动画效果
  • Scale:渐变尺寸伸缩动画效果
  • Translate:画面转换位置移动动画效果
  • Rotate:画面转换位置移动动画效果

在介绍以上4种类型前,先介绍Tween Animation共同的节点属性,关于节点的命名原则,请阅读AndroidManifest.xml文件结构说明

表一

属性[类型] 功能  
Duration[long] 属性为动画持续时间 时间以毫秒为单位
fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用

interpolator

指定一个动画的插入器 有一些常见的插入器
accelerate_decelerate_interpolator
加速-减速 动画插入器
accelerate_interpolator
加速-动画插入器
decelerate_interpolator
减速- 动画插入器
其他的属于特定的动画效果
repeatCount[int] 动画的重复次数  
RepeatMode[int] 定义重复的行为 1:重新开始  2:plays backward
startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
zAdjustment[int] 定义动画的Z Order的改变 0:保持Z Order不变
1:保持在最上层
-1:保持在最下层

看了以上节点,大家是不是都想开始定义动画了。下面我们就开始结合具体的例子,介绍4种类型各自特有的节点元素。

表二

XML节点 功能说明
alpha 渐变透明度动画效果
<alpha
android:fromAlpha=”0.1″
android:toAlpha=”1.0″
android:duration=”3000″ />
fromAlpha

属性为动画起始时透明度

0.0表示完全透明
1.0表示完全不透明
以上值取0.0-1.0之间的float数据类型的数字
toAlpha 属性为动画结束时透明度

表三

scale 渐变尺寸伸缩动画效果
<scale
android:interpolator= “@android:anim/accelerate_decelerate_interpolator”
android:fromXScale=”0.0″
android:toXScale=”1.4″
android:fromYScale=”0.0″
android:toYScale=”1.4″
android:pivotX=”50%”
android:pivotY=”50%”
android:fillAfter=”false”
android:startOffset=“700”
android:duration=”700″
android:repeatCount=”10″ />
fromXScale[float] fromYScale[float] 为动画起始时,X、Y坐标上的伸缩尺寸 0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
toXScale [float]
toYScale[float]
为动画结束时,X、Y坐标上的伸缩尺寸
pivotX[float]
pivotY[float]
为动画相对于物件的X、Y坐标的开始位置 属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置
       

表四

translate 画面转换位置移动动画效果
<translate
android:fromXDelta=”30″
android:toXDelta=”-80″
android:fromYDelta=”30″
android:toYDelta=”300″
android:duration=”2000″ />
fromXDelta
toXDelta
为动画、结束起始时 X坐标上的位置  
fromYDelta
toYDelta
为动画、结束起始时 Y坐标上的位置  
       

表五

rotate 画面转移旋转动画效果
<rotate
android:interpolator=”@android:anim/accelerate_decelerate_interpolator”
android:fromDegrees=”0″
android:toDegrees=”+350″
android:pivotX=”50%”
android:pivotY=”50%”
android:duration=”3000″ />
fromDegrees 为动画起始时物件的角度 说明
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
pivotX
pivotY
为动画相对于物件的X、Y坐标的开始位 说明:以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
       

看了上面的例子,想必大家也想看下,这些定义的动画,运行起来是什么样效果,下面运行Scale例子中的动画,界面变化如下:

Animation-1 Aniamtion-2
Aniamtion-3 Animation-4
     

按照上面的讲述学习完了Tween Animation的定义,对Tween Animation有了详细的了解,再去了解下Android SDK的animation package(android.view.animation),其提供了操作Tween Animation所有的类。

Android SDK提供了基类:Animation,包含大量的set/getXXXX()函数来设置、读取Animation的属性,也就是前面表一中显示的各种属性。Tween Animation由4种类型:alpha、scale、translate、roate,在Android SDK中提供了相应的类,Animation类派生出了AlphaAnimation、ScaleAnimation、TranslateAnimation、RotateAnimation分别实现了平移、旋转、改变 Alpha 值等动画,每个子类都在父类的基础上增加了各自独有的属性。再去看下这几个类的构造函数,是不是与我们在表二、表三、表四、表五种定义的属性完全一样。
Animation

在了解了Tween Animation的定义,对android.view.animation有了一些基本的认识后,开始介绍Tween Animation如何使用。Android SDK提供了2种方法:直接从XML资源中读取Animation,使用Animation子类的构造函数来初始化Animation对象,第二种方法在看了Android SDK中各个类的说明就知道如何使用了,下面简要说明从XML资源中读取Animation,按照应用程序开发的过程,介绍整个使用的过程,如下:

  1. 创建Android工程;
  2. 导入一张图片资源;
  3. 将res\layout\main.xml中的TextView取代为ImageView;
  4. 在res下创建新的文件夹anim,并在此文件夹下面定义Animation XML文件;
  5. 修改OnCreate()中的代码,显示动画资源;

关键代码,解析如下:
//main.xml中的ImageView
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
//加载动画
Animation hyperspaceJumpAnimation =
AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
//使用ImageView显示动画
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
工程的源代码提供给大家下载,下载地址,这里简要解析如下:

  • AnimationUtils提供了加载动画的函数,除了函数loadAnimation(),其他的到Android SDK中去详细了解吧;
  • 所谓的动画,也就是对 view 的内容做一次图形变换;

总结说明

看了这个长篇幅的介绍,详细大家对Tween Animation的定义、使用都有了比较深入的了解,由于篇幅有限,这里将Android SDK中的内容省略了不少,比如说:Interpolator,需要大家自己去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平台上,画图功能是通过Canvas类和相关的图形API实现的,这使得开发者能够创建丰富的自定义视图和交互式图形界面。本压缩包"android 画图集合.zip"包含多个示例项目,旨在帮助开发者深入理解Android图形...

    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

    标题 "android应用源码图片放大缩小旋转涂鸦源码.zip" 暗示...通过分析和理解源码,他们可以学习如何在Android平台上实现复杂的图片操作,并可能扩展到更多的图像编辑功能。同时,它也为自定义UI和交互提供了实践机会。

    Android-这是一个自定义LoadingView库

    Canvas用于在屏幕上画图,Paint定义了图形的颜色、样式等属性,Path则用于构建复杂的几何形状。 2. **动画实现**:自定义LoadingView通常需要实现动画效果,这可能涉及到Animation、ValueAnimator、ObjectAnimator...

    android各种动画套用

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

    android自定义控件绘图

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

    android 动画 碰撞矩形

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

    android界面效果全汇总

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

    android绘图机制与动画机制Demos

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

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

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

    Android版本的连连看源码

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

Global site tag (gtag.js) - Google Analytics