android View动画
本文不涉及属性动画,只涉及视图改变动画。包括透明度改变动画,平移动画,旋转动画,缩放动画。动画效果的定义可以采用XML定义,也可以代码中编码定义,下面描述了4中动画类型
动画的类型 | XML定义动画使用的配置节点 | 编码定义动画使用的类 |
---|---|---|
渐变透明度改变动画 | AlphaAnimation | |
渐变尺寸缩放动画效果 | ScaleAnimation | |
视图位置移动动画效果 | TransLateAnimation | |
视图旋转动画效果 | RotateAnimation |
采用XML定义动画,首先得在res目录下创建anim文件夹,在anim文件夹下新建动画资源文件。渐变透明度改变动画,创建动画资源文件,res/anim/alpha.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="5000"
android:fromAlpha="0.0"
android:toAlpha="1.0"
/>
</set>
属性 | 说明 |
---|---|
android:duration | 动画持续时间(单位毫秒) |
android:fromAlpha | 动画开始时的透明度(float类型,范围0.0-1.0 , 0为透明,1为完全不透明) |
android:toAlpha | 动画结束时的透明度(float类型,范围0.0-1.0 , 0为透明,1为完全不透明) |
上面的动画效果是:视图由不可见到完全可见,持续5秒
渐变尺寸缩放动画,创建动画资源文件,res/anim/scale.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:duration="3000"
android:pivotY="50%"
android:pivotX="50%"
android:fromXScale="1.0"
android:toXScale="2.0"
android:fromYScale="1.0"
android:toYScale="2.0"
/>
</set>
属性 | 说明 |
---|---|
android:duration | 动画持续时间(单位毫秒) |
android:pivotY | 动画开始时Y轴参考点(float类型,50%为视图中心点) |
android:pivotX | 动画开始时X轴参考点(float类型,50%为视图中心点) |
android:fromXScale | 动画开始时X轴偏移(float类型,1为不变) |
android:toXScale | 动画结束时X轴偏移(float类型,2为放大1倍) |
android:fromYScale | 动画开始时Y轴偏移(float类型,1为不变) |
android:toYScale | 动画结束时Y轴偏移(float类型,2为放大1倍) |
上面的动画效果是:视图以自身中心点为参考,放大1倍,持续3秒
视图位置移动动画,创建动画资源文件,res/anim/translate.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0.0"
android:fromYDelta="0.0"
android:toXDelta="200.0"
android:toYDelta="200.0"
android:duration="3000"
/>
</set>
属性 | 说明 |
---|---|
android:duration | 动画持续时间(单位毫秒) |
android:fromXDelta | 动画开始时X轴偏移(float类型,0为视图起始位置) |
android:toXDelta | 动画结束时X轴偏移(float类型) |
android:fromYDelta | 动画开始时Y轴偏移(float类型,0为视图起始位置) |
android:toYDelta | 动画结束时Y轴偏移(float类型) |
上面的动画效果是:视图从起始位置开始移动到相对起始位置(200,200)处,持续3秒
视图旋转动画,创建动画资源文件,res/anim/rotate.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/linear_interpolator"
android:duration="1000"
android:fromDegrees="0.0"
android:toDegrees="360.0"
android:pivotX="50.0%"
android:pivotY="50.0%"
android:repeatCount="infinite"
/>
</set>
属性 | 说明 |
---|---|
android:interpolator | 设置动画速度,默认匀速 |
android:duration | 动画持续时间(单位毫秒) |
android:fromDegrees | 动画开始角度(float类型) |
android:toDegrees | 动画结束时角度(float类型) |
android:pivotX | 动画开始时X轴参考点(float类型,50%为视图中心点) |
android:pivotY | 动画开始时Y轴参考点(float类型,50%为视图中心点) |
android:repeatCount | 动画循环执行次数(默认值0,执行1次;infinite 无限循环,值为-1) |
上面的动画效果是:视图以自身中心点从0度旋转到360度,无限循环,一直旋转
四种动画效果图