Android Animation用法解析

Android 通过Animation类可以实现动画效果.Animation包括两种效果模式:

1. Tween Animation:渐变动画,通过对操作的对象进行相关的做图像变换(平移、缩放、旋转)产生动画效果;

2. Frame Animation:帧动画,通过顺序播放已准备好的图像而产生的动画效果。

一、TweenAnimation

XML

效果

Java

alpha

渐变透明度动画效果

AlphaAnimation

scale

渐变尺寸伸缩动画效果

ScaleAnimation

translate

画面转换位置移动动画效果

TranslateAnimation

rotate

画面转移旋转动画效果

RotateAnimation

1.新建Animation动画效果

在项目工程中,一般在res目录下新建一个anim目录,该目录放置Animation相关的xml文件。

如:my_animation.xml

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


Java中调用定义的xml

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

2.XML实例讲解各个动画效果

2.1. alpha

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

2.2. scale

<?xmlversion="1.0" encoding="utf-8"?><setxmlns: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="1000"/></set><!--渐变尺寸伸缩动画效果scale       属性:interpolator 指定一个动画的插入器       有三种动画插入器:           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 ,该动画转化在动画结束后被应用-->

2.3translate

<?xmlversion="1.0" encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:fromXDelta="0"android:toXDelta="-100"android:fromYDelta="30"android:toYDelta="100"android:duration="2000"/><!--画面转换位置移动动画效果translate        整型值:            fromXDelta 属性为动画起始时 X坐标上的位置               toXDelta   属性为动画结束时 X坐标上的位置            fromYDelta 属性为动画起始时 Y坐标上的位置            toYDelta   属性为动画结束时 Y坐标上的位置            注意:                     没有指定fromXType toXType fromYType toYType 时候,                     默认是以自己为相对参照物                    长整型值:            duration  属性为动画持续时间            说明:   时间以毫秒为单位--></set>

2.4. rotate

<?xmlversion="1.0" encoding="utf-8"?><setxmlns: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 指定一个动画的插入器             有三种动画插入器:               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>

3.Java代码实现动画效果

//在代码中定义动画实例对象private Animation myAnimation_Alpha;private Animation myAnimation_Scale;private Animation myAnimation_Translate;private Animation myAnimation_Rotate;       //根据各自的构造方法来初始化一个实例对象 /**参数1:fromAlpha为动画开始时候透明度*参数2:toAlpha为动画结束时候透明度*/myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f); /**参数1:fromX为动画起始时 X坐标上的伸缩尺寸*参数2:toX为动画结束时 X坐标上的伸缩尺寸*参数3:fromY为动画起始时Y坐标上的伸缩尺寸*参数4:toY为动画结束时Y坐标上的伸缩尺寸*参数5:pivotXType为动画在X轴相对于物件位置类型*参数6:pivotXValue为动画相对于物件的X坐标的开始位置*参数7:pivotXType为动画在Y轴相对于物件位置类型*参数8:pivotYValue为动画相对于物件的Y坐标的开始位置*/myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,   Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF, 0.5f);/**参数1:fromXDelta为动画起始时 X坐标上的移动位置*参数2:toXDelta为动画结束时 X坐标上的移动位置 *参数3:fromYDelta为动画起始时Y坐标上的移动位置*参数4:toYDelta为动画结束时Y坐标上的移动位置*/myAnimation_Translate=new TranslateAnimation(30.0f, -80.0f, 30.0f,300.0f); /**参数1:fromDegrees为动画起始时的旋转角度   *参数2:toDegrees为动画旋转到的角度  *参数3:pivotXType为动画在X轴相对于物件位置类型 *参数4:pivotXValue为动画相对于物件的X坐标的开始位置*参数5:pivotXType为动画在Y轴相对于物件位置类型  *参数6:pivotYValue为动画相对于物件的Y坐标的开始位置*/myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,        Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

4.常用的Animation实例

4.1.push_left_in.xml——左进渐变效果

<?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android" >      <translate          android:duration="1500"          android:fromXDelta="100%p"          android:toXDelta="0" />        <alpha          android:duration="1500"          android:fromAlpha="0.1"          android:toAlpha="1.0" />  </set>  
4.2.push_left_out.xml ——右出渐变效果
<?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android" >      <translate          android:duration="1500"          android:fromXDelta="0"          android:toXDelta="-100%p" />        <alpha          android:duration="1500"          android:fromAlpha="1.0"          android:toAlpha="0.1" />  </set>
4.3.push_right_in.xml —— 右进渐变效果

<?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android" >      <translate          android:duration="1500"          android:fromXDelta="-100%p"          android:toXDelta="0" />        <alpha          android:duration="1500"          android:fromAlpha="0.1"          android:toAlpha="1.0" />  </set>  

4.4.push_right_out.xml —— 右出渐变效果

<?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android" >      <translate          android:duration="1500"          android:fromXDelta="0"          android:toXDelta="100%p" />        <alpha          android:duration="1500"          android:fromAlpha="1.0"          android:toAlpha="0.1" />  </set> 
其中,android:duration表示渐变持续时间;translate表示位移变换;alpha表示透明度变换

translate

android:fromXDelta="-100%p" android:toXDelta="0" 表示图片从左进入,从不可见到可见

android:fromXDelta="0"android:toXDelta="100%p" 表示图片从右滑出,从可见到不可见


alpha

android:fromAlpha="1.0"android:toAlpha="0.1" 表示图片从不透明(1.0)到透明(0.1)

android:fromAlpha="0.1" android:toAlpha="1.0" 表示图片从透明(0.1)到不透明(1.0)




更多相关文章

  1. Android(安卓)点击View Rotate旋转带视图动画
  2. 【Android】深入理解Android中的自定义属性
  3. android布局之线性布局(LinearLayout)
  4. View绘制体系(三)——AttributeSet与TypedArray详解
  5. 全志A40i Android7永不休眠及不锁屏的修改方法
  6. Android控件复习之TextView与EditText
  7. android中使用frameAnimation帧动画方法
  8. Firefox OS 学习——manifest.webapp结构分析
  9. Activity的属性之―launchMode

随机推荐

  1. Android中子线程网络查看器与Handler消息
  2. Android中点击事件之KeyListener实现步骤
  3. Android(安卓)Inset Drawable
  4. Android中手机文件储存路径
  5. android meta-data获取
  6. unity和Android交互(内容部分为转载)
  7. Android(安卓)开机自启和后台自启权限
  8. Android向Http服务器发送Http请求异常-Un
  9. ### Android(安卓)判断app的状态 重启app
  10. Android程序——退出程序的时候杀死所有