一、视图动画(View Animation)
1. 概述:
视图动画,也叫Tween(补间)动画可以在一个视图容器中执行一系列简单变换(位置、大小、旋转、透明度)。譬如,如果你有一个TextView 对象,您可以移动、旋转、缩放、透明度设置其文本,当然,如果它有一个背景图像,背景图像会随着文本变化。
补间动画通过XML或Android代码定义,建议使用XML文件定义,因为它更具有可读性、可重用性
Java类名 |
XML关键字 |
描述信息 |
AlphaAnimation |
Alpha 放置在res/anim/目录下 |
渐变透明度动画效果 |
RotateAnimation |
Rotate 放置在res/anim/目录下 |
画面旋转动画效果 |
ScaleAnimation |
Scale放置在res/anim/目录下 |
渐变尺寸伸缩动画效果 |
TranslateAnimation |
translate放置在res/anim/目录下 |
画面转换移动动画效果 |
AnimationSet |
set 放置在res/anim/目录下 |
一个持有其他动画元素aplha、scale、translate、rotate或者其他set元素的容器 |
2. 视图动画说明:
可以看出来Animation抽象类是所有补间动画的基类,所以基类会提供一些通用的动画属性方法,如下,我们可以详细的看看这些属性:
2.1.Animation属性详解
XML属性 |
Java方法 |
解释 |
android:detachWallpaper |
setDetachWallpaper(boolean) |
是否在壁纸上运行 |
android:duration |
setDuration(long) |
动画持续时间、毫秒为单位 |
android:fillAfter |
setFillAfter(boolean) |
控件动画结束时是否保持动画最后的状态 |
android:fillBefore |
setFillBefore(boolean) |
控件动画结束时是否保持动画开始的状态 |
android:fillEnable |
setFillEnable(boolean) |
与android:fillBefore效果相同 |
android:interpolator |
setInterpolator(Interpolator) |
设定差值器(指定的动画效果,譬如回弹等) |
android:repeatCount |
setRepeatCount(int) |
重复次数 |
android:repeatMode |
setRepeatModer(int) |
重复类型有两个值,reverse表示倒序排放,restart表示从头播放 |
android:startOffset |
setStartOffset(long) |
调用start函数之后等待开始运行的时间,单位为毫秒 |
android:zAdjustment(int) |
setZAdjustment(int) |
表示被设置动画的内容运行时在Z轴的位置(top / bottome / normal)默认为Normal |
也就是说,无论我们补间动画的哪一种都已经具备了这种属性,也可以设置使用这些属性中的一个或多个
2.2 Alpha属性详解
XML属性 |
Java方法 |
解释 |
android:fromAlpha |
AlphaAnimation(float fromAlpha,…) |
动画开始的透明度(0.0到1.0,0.0是全透明,1.0是不透明) |
android:toAlpha |
alphaAnimation(…,float toAlpha) |
动画结束的透明度(0.0到1.0,0.0是全透明,1.0是不透明) |
2.3 Rotate属性详解
XML属性 |
Java方法 |
解释 |
android:fromDegrees |
RotateAnimation(folat fromDegrees,…) |
旋转开始角度,正代表顺时针度数,负代表逆时针度数 |
android:toDegrees |
RotateAnimation(…,folat toDegrees,…) |
旋转结束角度,正代表顺时针度数,负代表逆时针度数 |
android:pivotX |
RotateAnimation(…, folat pivoX,…) |
缩放起点X坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点) |
android:pivotY |
RotateAnimation(…, folat pivoY,…) |
缩放起点Y坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点) |
2.4 Scale属性详解
XML属性 |
Java方法 |
解释 |
android:fromXScale |
ScaleAnimation(float fromX,…) |
初始化X轴缩放比例,1.0表示无变化 |
android:toXScale |
ScaleAnimation(…,float toX,…) |
结束X轴缩放比例 |
android:fromYScale |
ScaleAnimation(…,float fromY,…) |
初始化Y轴缩放比例,1.0表示无变化 |
android:toYScale |
ScaleAnimation(…,float toY,…) |
结束Y轴缩放比例 |
android:pivotX |
ScaleAnimation(…, folat pivoX,…) |
缩放起点X坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点) |
android:pivotY |
ScaleAnimation(…, folat pivoY,…) |
缩放起点Y坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点) |
2.5 Translate属性详解
XML属性 |
Java方法 |
解释 |
android:fromXDelta |
TranlateAnimation(float fromXDelta,…) |
起点X坐标(数值、百分数、百分数P,譬如50表示以当前View左上角坐标加50px为初始点,50%表示以当前View宽高的50%做为起始点、50%p表示以当前View的左上角加上负空间宽高的50%做为初始点) |
android:fromYDelta |
TranslateAnimation(…,float fromYDelta,…) |
起始点Y坐标,同上规律 |
android:toXDelta |
TranslateAnimation(…,float toXDelta,…) |
结束点坐标,同上规律 |
android:toYDelta |
TranslateAnimation(…,float toYDelta) |
结束点Y坐标,同上规律 |
2.6 AnimationSet属性详解
AnimationSet 继承自Animation,是上面四种的组合容器管理类,没有自己特有的属性,他的属性继承自Animation,所以特别注意,当我们对set标签使用Animation的属性时会对该标签下的所有子控件都产生影响
3. 视图动画使用方法
视图使用动画有两种,Java代码方式和xml方式
xml 方式
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">