在Android开发中为了提升界面的用户体验,经常需要使用动画效果,在Android中提供了很多动画效果,如:旋转动画、透明度、位置变换、大小变换等动画效果。这些效果在Android中都是通过XML文件进行定义的,下面将详细讲解。
1、用XML创建动画的步骤
第一步、打开Eclipse,新建Android工程
第二步、在res目录中新建anim文件夹
第三步、在anim目录中新建一个myanim.xml ( 注意文件名小写 )
第四步、加入XML的动画代码
<?xml version="1.0" encoding="utf-8" ?> <set xmlns:android="https://schemas.android.com/apk/res/android"> <alpha /> <!-- 透明度控制 --> <scale /> <!-- 尺寸伸缩 --> <translate /> <!-- 位置转移动 --> <rotate /> <!-- 旋转动画 --> </set>
2、XML标签详解
2.1 <alpha> 标签(控制透明度)
<?xml version="1.0" encoding="utf-8" ?> <set xmlns:android="https://schemas.android.com/apk/res/android" > <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="3000" /> </set>
属性说明:
fromAlpha 属性为动画起始时透明度
toAlpha 属性为动画结束时透明度
说明:
0.0 表示完全透明
1.0 表示完全不透明
(以上值取0.0-1.0之间的float数据类型的数字)
duration 属性为动画持续时间(长整型值)
说明: 时间以毫秒为单位
2.2 <scale> 标签(控制尺寸伸缩)
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="https://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>
属性说明:
interpolator 指定一个动画的插入器,在我试验过程中,使用android.res.anim中的资源时候发现
有三种动画插入器:
a、accelerate_decelerate_interpolator 加速-减速 动画插入器
b、accelerate_interpolator 加速-动画插入器
c、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.3 <translate>标签(位置转移)
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="https://schemas.android.com/apk/res/android"> <translate android:fromXDelta="30" android:toXDelta="-80" android:fromYDelta="30" android:toYDelta="300" android:duration="2000" /> </set>
属性说明:
fromXDelta 属性为动画起始时 X坐标上的位置 (整型值)
toXDelta 属性为动画结束时 X坐标上的位置 (整型值)
fromYDelta 属性为动画起始时 Y坐标上的位置 (整型值)
toYDelta 属性为动画结束时 Y坐标上的位置 (整型值)
注意: 没有指定fromXType、toXType、fromYType、toYType 时候,默认是以自己为相对参照物
duration 属性为动画持续时间 (长整型值)
说明: 时间以毫秒为单位
2.4 <rotate>标签(控制旋转)
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="https://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" /> </set>
属性说明:
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 属性为动画持续时间
说明: 时间以毫秒为单位
3、用java代码调用动画文件
Button button = (Button)findViewById(R.id.ok) button.setOnClickListener(new OnClickListener(){ public void onClick(View v) { Animation animation = AnimationUtils.loadAnimation(HelloActivity.this, R.anim.buttonain); findViewById(R.id.listView).startAnimation( animation ); } });