一 概述
本文主要讲解视图动画相关的知识,除了四种基本动画以外,还有set
标签的使用。视图动画都可以通过两种方式来使用,一是通过xml,二是只使用代码。视图动画主要分为如下几种动画:
类别 | 描述 |
---|---|
alpha | 透明度动画 |
scale | 缩放动画 |
translate | 平移动画 |
rotate | 旋转动画 |
以上四种动画,有部分通用的属性和方法,如下表:
xml属性 | 对应方法 | 描述 |
---|---|---|
android:detachWallpaper | setDetachWallpaper(boolean) | 是否在壁纸上运行 |
android:duration | setDuration(long) | 动画持续时间,毫秒为单位 |
android:fillAfter | setFillAfter(boolean) | 动画结束时是否保持在动画最后的状态 |
android:fillBefore | setFillBefore(boolean) | 动画结束时是否保持在动画开始前的状态 |
android:fillEnabled | setFillEnabled(boolean) | 与android:fillBefore效果相同 |
android:interpolator | setInterpolator(Interpolator) | 设定插值器(后面有讲解) |
android:repeatCount | setRepeatCount(int) | 重复次数 |
android:repeatMode | setRepeatMode(int) | 重复类型,reverse表示倒序回放,restart表示从头播放 |
android:startOffset | setStartOffset(long) | 调用start函数之后的延迟时间,单位为毫秒 |
android:zAdjustment | setZAdjustment(int) | 动画的内容运行时在Z轴上的位置,上层或者底层(top/bottom/normal),默认为normal |
二 alpha动画
alpha动画,即是透明度动画,可以操作透明度,特有属性有
xml属性 | 描述 |
---|---|
android:fromAlpha | 动画开始的透明度 |
android:toAlpha | 动画结束的透明度 |
在代码中,创建AlphaAnimation
对象的时候,也可以在构造方法中指定上述的两个参数。AlphaAnimation(float fromAlpha, float toAlpha)
。
alpha动画相对比较简单。
二 scale动画
缩放动画,动画中可以缩放视图,改变视图的大小,特有的属性如下
xml属性 | 对应方法 | 描述 |
---|---|---|
android:fromXScale | ScaleAnimation(float fromX, …) | 初始x轴缩放比例,1表示原始大小 |
android:toXScale | ScaleAnimation(…, float toX, …) | 结束X轴缩放比例 |
android:fromYScale | ScaleAnimation(…, float fromY, …) | 初始Y轴缩放比例 |
android:toYScale | ScaleAnimation(…, float toY, …) | 结束Y轴缩放比例 |
android:pivotY | ScaleAnimation(…, float pivotY) | 缩放起点Y轴坐标 |
android:pivotX | ScaleAnimation(…, float pivotX, …) | 缩放起点X轴坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点) |
以上的ScaleAnimation(float fromX, …)
代表构造方法时传递的参数。
三 translate
平移动画,动画中可以平移视图,改变视图的位置,特有的属性如下
xml属性 | 对应方法 | 描述 |
---|---|---|
android:fromXDelta | TranslateAnimation(float fromXDelta, …) | 起始点X轴坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点) |
android:fromYDelta | TranslateAnimation(…, float fromYDelta, …) | 起始点Y轴从标,同上规律 |
android:toXDelta | TranslateAnimation(…, float toXDelta, …) | 结束点X轴坐标,同上规律 |
android:toYDelta | TranslateAnimation(…, float toYDelta) | 结束点Y轴 |
值得说明的fromXDelta
中的x
坐标,默认是以控件自己作为参照物。如果是0,则是当前位置。
四 rotate
旋转动画,动画中可以旋转视图,特有的属性如下
xml属性 | 对应方法 | 描述 |
---|---|---|
android:fromDegrees | RotateAnimation(float fromDegrees, …) | 旋转开始角度,正代表顺时针度数,负代表逆时针度数 |
android:toDegrees | RotateAnimation(…, float toDegrees, …) | 旋转结束角度,正代表顺时针度数,负代表逆时针度数 |
android:pivotX | RotateAnimation(…, float pivotX, …) | 起点X坐标 |
android:pivotY | RotateAnimation(…, float pivotY) | 起点Y坐标 |
以上四种基本动画比较简单,如果需要联合使用可以使用set
标签,或者在代码中使用AnimationSet
。