关于Android提供的Animation动画的实现

来源:互联网 发布:护卫神php 教程 编辑:程序博客网 时间:2024/05/01 09:34

Animation动画分为两类:

1. Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画;

2. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画。


动画类型

下面先来看看Android提供的动画类型。Android的animation由四种类型组成

在XML文件中:

  • alpha         渐变透明度动画效果
  • scale          渐变尺寸伸缩动画效果
  • translate    画面转换位置移动动画效果
  • rotate         画面转移旋转动画效果

在Java 源码中定义了相应的类,可以使用这些类的方法来获取和操作相应的属性:

  • AlphaAnimation           渐变透明度动画效果
  • ScaleAnimation           渐变尺寸伸缩动画效果
  • TranslateAnimation     画面转换位置移动动画效果
  • RotateAnimation         画面转移旋转动画效果


Android动画模式

Animation主要有两种动画模式:
一种是Tweened Animation(渐变动画)
XML中
JavaCode
alpha
AlphaAnimation
scale
ScaleAnimation


一种是Frame by Frame(画面转换动画)
XML中
JavaCode
translate
TranslateAnimation
rotate
RotateAnimation


一、在XML文件中定义动画

① 打开Eclipse,新建Android工程
② 在res目录中新建anim文件夹
③ 在anim目录中新建一个myanim.xml(注意文件名小写)
④ 加入XML的动画代码

  1. xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3.   <alpha/>
  4.   <scale/>
  5.   <translate/>
  6.   <rotate/>
  7. </set>


   Android动画解析--XML

1、<alpha>

  • <?xml version="1.0" encoding="utf-8"?>
  • <set xmlns:android="http://schemas.android.com/apk/res/android" >
  • <alpha
  • android:fromAlpha="0.1"
  • android:toAlpha="1.0"
  • android:duration="3000"
  • />
  • <!-- 透明度控制动画效果 alpha
  •         浮点型值:
  •             fromAlpha 属性为动画起始时透明度
  •             toAlpha   属性为动画结束时透明度
  •             说明:
  •                 0.0表示完全透明
  •                 1.0表示完全不透明
  •             以上值取0.0-1.0之间的float数据类型的数字
  •         
  •         长整型值:
  •             duration  属性为动画持续时间
  •             说明:     
  •                 时间以毫秒为单位
  • -->
  • </set>


    2、<scale>

  • <?xml version="1.0" encoding="utf-8"?>
  • <set xmlns:android="http://schemas.android.com/apk/res/android">
  •    <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:duration="700" />
  • </set>
  • <!-- 尺寸伸缩动画效果 scale
  •        属性:interpolator 指定一个动画的插入器
  •         在我试验过程中,使用android.res.anim中的资源时候发现
  •         有三种动画插入器:
  •             accelerate_decelerate_interpolator  加速-减速 动画插入器
  •             accelerate_interpolator        加速-动画插入器
  •             decelerate_interpolator        减速- 动画插入器
  •         其他的属于特定的动画效果
  •       浮点型值:
  •          
  •             fromXScale 属性为动画起始时 X坐标上的伸缩尺寸   
  •             toXScale   属性为动画结束时 X坐标上的伸缩尺寸     
  •         
  •             fromYScale 属性为动画起始时Y坐标上的伸缩尺寸   
  •             toYScale   属性为动画结束时Y坐标上的伸缩尺寸   
  •         
  •             说明:
  •                  以上四种属性值   
  •    
  •                     0.0表示收缩到没有
  •                     1.0表示正常无伸缩     
  •                     值小于1.0表示收缩  
  •                     值大于1.0表示放大
  •         
  •             pivotX     属性为动画相对于物件的X坐标的开始位置
  •             pivotY     属性为动画相对于物件的Y坐标的开始位置
  •         
  •             说明:
  •                     以上两个属性值 从0%-100%中取值
  •                     50%为物件的X或Y方向坐标上的中点位置
  •         
  •         长整型值:
  •             duration  属性为动画持续时间
  •             说明:   时间以毫秒为单位

  •         布尔型值:
  •             fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
  • -->


    3、<translate>

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <set xmlns:android="http://schemas.android.com/apk/res/android">
    3. <translate
    4. android:fromXDelta="30"
    5. android:toXDelta="-80"
    6. android:fromYDelta="30"
    7. android:toYDelta="300"
    8. android:duration="2000"
    9. />
    10. <!-- translate 位置转移动画效果
    11.         整型值:
    12.             fromXDelta 属性为动画起始时 X坐标上的位置   
    13.             toXDelta   属性为动画结束时 X坐标上的位置
    14.             fromYDelta 属性为动画起始时 Y坐标上的位置
    15.             toYDelta   属性为动画结束时 Y坐标上的位置
    16.             注意:
    17.                      没有指定fromXType toXType fromYType toYType 时候,
    18.                      默认是以自己为相对参照物            
    19.         长整型值:
    20.             duration  属性为动画持续时间
    21.             说明:   时间以毫秒为单位
    22. -->
    23. </set>
    4、<rotate>

  • <?xml version="1.0" encoding="utf-8"?>
  • <set xmlns:android="http://schemas.android.com/apk/res/android">
  • <rotate
  •         android:interpolator="@android:anim/accelerate_decelerate_interpolator"
  •         android:fromDegrees="0"
  •         android:toDegrees="+350"         
  •         android:pivotX="50%"
  •         android:pivotY="50%"     
  •         android:duration="3000" />  
  • <!-- rotate 旋转动画效果
  •        属性:interpolator 指定一个动画的插入器
  •              在我试验过程中,使用android.res.anim中的资源时候发现
  •              有三种动画插入器:
  •                 accelerate_decelerate_interpolator   加速-减速 动画插入器
  •                 accelerate_interpolator               加速-动画插入器
  •                 decelerate_interpolator               减速- 动画插入器
  •              其他的属于特定的动画效果
  •                            
  •        浮点数型值:
  •             fromDegrees 属性为动画起始时物件的角度   
  •             toDegrees   属性为动画结束时物件旋转的角度 可以大于360度   

  •         
  •             说明:
  •                      当角度为负数——表示逆时针旋转
  •                      当角度为正数——表示顺时针旋转              
  •                      (负数from——to正数:顺时针旋转)   
  •                      (负数from——to负数:逆时针旋转)
  •                      (正数from——to正数:顺时针旋转)
  •                      (正数from——to负数:逆时针旋转)      

  •             pivotX     属性为动画相对于物件的X坐标的开始位置
  •             pivotY     属性为动画相对于物件的Y坐标的开始位置
  •                
  •             说明:        以上两个属性值 从0%-100%中取值
  •                          50%为物件的X或Y方向坐标上的中点位置

  •         长整型值:
  •             duration  属性为动画持续时间
  •             说明:       时间以毫秒为单位
  • -->
  • </set>


    使用XML中的动画效果

  • public static Animation loadAnimation (Context context, int id)
  • //第一个参数Context为程序的上下文   
  • //第二个参数id为动画XML文件的引用
  • //例子:
  • myAnimation= AnimationUtils.loadAnimation(this,R.anim.my_action);
  • //使用AnimationUtils类的静态方法loadAnimation()来加载XML中的动画XML文件







  • 原创粉丝点击