当前位置:操作系统 > 安卓/Android >>

android学习-动画(基本的四种动画)

先看段关于android中动画配置文件的伪代码:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:interpolator="@android:anim/accelerate_interpolator"> 
    <alpha /> 
    <rotate /> 
    <scale/> 
    <translate/> 
</set> 

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/accelerate_interpolator">
    <alpha />
    <rotate />
    <scale/>
    <translate/>
</set>


现在来慢慢理清楚:

 

xmlns:android="http://schemas.android.com/apk/res/android"  

xmlns:android="http://schemas.android.com/apk/res/android

申明xml的命名空间,xmlns(xml namespace的缩写),而冒号后面是给这个引用起的别名schemas是xml约束文件,规定了xml中有哪些元素(标签),元素有哪些属性以及各元素的关系,当申明了命名空间和约束文件后,就可以在改xml文档中引用资源,存放在apk/res/android下的资源都可以访问,比如在写<rotate/>中的属性时,用"android:"这样来引用的,当然也可以自己定义自己的资源文件(比如test),就可以用"test:"这样来引用。

 android:interpolator="@android:anim/decelerate_interpolator" 

android:interpolator="@android:anim/decelerate_interpolator"

首先明白interpolator是定义一个动画的变化率,这使得基本的动画效果(scale、alpha、translate、rotate)得以加速、减速以及重复等等,用通俗的话来讲就是动画的进度使用Interpolator来控制,控制效果有匀速、正加速、负加速、无规则变速等等,Interpolator接口只有一个抽象方法getInterpolation(float input),由此SDK中扩展了另外几个类。

常用Interpolator类:
AccelerateInterpolator:动画从开始到结束,变化率是一个加速的过程。
DecelerateInterpolator:动画从开始到结束,变化率是一个减速的过程。
AccelerateDecelerateInterpolator:动画从开始到结束,变化率是先加速后减速的过程。

androidSDK中动画分为两种,
一种是Tween Animation(渐变动画):通过对场景里的对象不断地做图像变换处理,如平移、缩放、旋转等。

一种是Frame Animation(帧动画):顺序播放实现做好的图像。

 


android中的四种动画

四种动画是android提供的基本动画类型,在配置文件中,他们都可以放在<set></set>标签中,那么怎样建立一个动画效果呢。看下面的xml动画配置文件:
第一步:在res目录下建立一个名字为anim的文件夹,并且在这个文件夹下建立一个新的xml文件,文件名字自拟。
第二步:添加命名空间,即写set标签,并且指定动画的控制器(可以不写)。
第三步:开始制定和设置动画类型及动画初值。

请注意当有rotate标签和translate标签一起使用时,请将rotate标签放在translate之前。

各个标签的属性含义

set标签属性的含义:
android:shareInterpolator—— 是否共享插入器,共享时,四个子节点都用一个插入器
android:interpolator ——指定一个动画的插入器,使用系统资源
android:fillEnabled——当设置为true时,fillAfter和fillBefroe将会都为true,此时会忽略fillBefore和fillAfter两种属性
android:fillAfter——该动画转化是否在动画结束后被应用boolean
android:fillBefore——该动画转化是否在动画开始前被应用boolean
android:repeatMode—— 重复模式restart  或者 reverse
android:repeatCount ——重复次数integer
android:duration ——动画持续时间integer
android:startOffset—— 动画时间间隔long
android:zAdjustment——定义动画zorder的变换normal 或者 top 或者 bottom

scale标签属性的含义:
android:interpolator——同set属性
android:fromXScale——动画开始时,x坐标上的延伸尺寸(float 0.0表示收缩到最小,1.0表示无收缩)
android:toXScale——同理
android:fromYScale——同理
android:toYScale——同理
android:duration——动画持续的时间(int 单位毫秒)
android:pivotX——动画的开始时相对于物件的x位置(0%~100%)
android:pivotY——同理 
android:fillEnabled ——同set属性
android:fillBefore——同set属性
android:fillBefore——同set属性
android:fillAfter——同set属性
android:startOffset——同set属性
android:repeatCount——同set属性
android:repeatMode——同set属性

rotate标签属性的含义:
android:fromDegrees—— 动画开始时的角度(有正负号之分)
android:toDegrees——动画结束时的角度(有正负号之分)
android:pivotX——可以理解为旋转的中心(0%~100%)
android:pivotY——同理 
android:duration——动画持续的时间(int 单位毫秒)

alpha标签属性的含义:
android:toAlpha——动画结束时的透明度(float  0表示完全透明 1表示完全不透明)
android:duration——动画持续的时间(int 单位毫秒)
android:fromAlpha——动画开始时的透明度(float  0表示完全透明 1表示完全不透明)

translate标签属性的含义:
android:fromXDelta——动画开始时,X坐标上的位置integer  默认以自己为参照物
android:toXDelta——动画结束时,X坐标上的位置integer  默认以自己为参照物
android:fromYDelta——动画开始时,Y坐标上的位置integer  默认以自己为参照物
android:toYDelta——动画结束时,Y坐标上的位置integer  默认以自己为参照物

当然,scale,rotate,alpha,translate中的属性不止这些,还有些和set标签一样,就没有重复写。到这里android动画最简单的知识就完了。接下来还会继续学习,继续总结。

 


 

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,