Anim XML 标签定义说明
Animation 动画有哪些
Tween Animation 提供四种效果 旋转、移动、伸展 和 渐变
- Alpha (透明渐变)
- Scale (缩放)
- Translate (移动)
- Rotate (旋转)
每个动画效果均有各自的语法,统一放置于 /res/anim 目录下,文件名作为资源 ID 引用.
XML文件中必须有一个根元素,可以是<alpha>、<scale>、<translate>、<rotate>中的任意一个,
也可以是<set>来管理一个由前面几个元素组成的动画集合。
坐标概念
从上图可以看出,以手机屏幕下面边未X轴,屏幕左边为Y轴,
- 当Activity在X轴值为-100%p时,刚好在屏幕的左边(位置1),
- 当X轴值为0%p时,刚好再屏幕内(位置2),
- 当X=100%p时刚好在屏幕右边(位置3)。
Set 标签
一个动画容器,管理多个动画的群组,与之相对应的Java对象是AnimationSet。
它有两个属性,
android:interpolator代表 一个插值器资源,可以引用系统自带插值器资源,也可以用自定义插值器资源,默认值是匀速插值器;稍后我会对插值器做出详细讲解。
android:shareInterpolator代表<set>里面的多个动画是否要共享插值器,默认值为true,即共享插值器,如果 设置为false,那么<set>的插值器就不再起作用,我们要在每个动画中加入插值器。
<!-- 例子 -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 位移 -->
<translate
android:fromXDelta="-100%p"
android:toXDelta="0"
android:fromYDelta="0"
android:toYDelta="0"
android:duration="375"
android:interpolator="@android:interpolator/decelerate_cubic">
</translate>
<!-- 缩放 -->
<scale
android:fromXScale="0.95"
android:toXScale="1.0"
android:fromYScale="0.95"
android:toYScale="1.0"
android:pivotX="50%p"
android:pivotY="50%p"
android:duration="600"
android:interpolator="@android:interpolator/decelerate_cubic"
>
</scale>
<!-- 渐变 -->
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:interpolator="@interpolator/accelerate_cubic"
android:fillEnabled="true"
android:fillBefore="true" android:fillAfter="true"
android:duration="280"/>
</set>
Animation Alpha 语法
实现 fadeIn(渐入) 和 fadeOut(渐出) 的效果,与之对应的 Java 类是 AlphaAnimation .
属性 | 含义 | 取值 | 单位 | 补充 |
---|---|---|---|---|
android:fromAlpha | 代表起始alpha值 | 0.0 ~ 1.0 | 浮点值 | 代表透明和完全不透明 |
android:toAlpha | 代表结尾alpha值 | 0.0 ~ 1.0 | 浮点值 | 代表透明和完全不透明 |
Animation Scale 语法
实现 动态调控件尺寸 的效果,与之对应的 Java 类是 ScaleAnimation.
属性 | 含义 | 取值 | 单位 | 补充 |
---|---|---|---|---|
android:fromXScale | 起始的X方向上相对自身的缩放比例 | 0.0 ~ ∞ | 浮点值 | 1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍; |
android:toXScale | 结尾的X方向上相对自身的缩放比例 | 0.0 ~ ∞ | 浮点值 | 同上 |
android:fromYScale | 起始的Y方向上相对自身的缩放比例 | 0.0 ~ ∞ | 浮点值 | 同上 |
android:toYScale | 结尾的 Y方向上相对自身的缩放比例 | 0.0 ~ ∞ | 浮点值 | 同上 |
android:pivotX | 缩放的中轴点X坐标 | 0.0 ~ ∞ | 浮点值 & 百分比 | 如果想表示中轴点为图像的中心,我们可以把两个属性值定义成0.5或者50%。 |
android:pivotY | 缩放的中 轴点Y坐标 | 0.0 ~ ∞ | 浮点值 & 百分比 | 同上 |
Animation Translate 语法
实现 控件水平、垂直的位移 的动画效果,与之对应的 Java 类是 TranslateAnimation.
属性 | 含义 | 取值 | 单位 | 补充 |
---|---|---|---|---|
android:fromXDelta | 起始 X 方向的位置 | 0.0 ~ ∞ | 浮点数、num%、num%p | 以浮点数字表示,代表相对自身原始位置的像素值 |
android:toXDelta | 结尾 X 方向上的位置 | 0.0 ~ ∞ | 浮点数、num%、num%p | 如果以num%p表示,代表相对于父类组件的百分比 |
android:fromYDelta | 起始 Y 方向的位置 | 0.0 ~ ∞ | 浮点数、num%、num%p | 同上 |
android:toYDelta | 结尾 Y 方向上的位置 | 0.0 ~ ∞ | 浮点数、num%、num%p | 同上 |
比如 toXDelta 定义为 100% 就表示在 X 方向上移动自己的 1 倍距离.
Animation Rotate 语法
实现 控件旋转 的动画效果,与之对应的 Java 类是 RotateAnimation.
属性 | 含义 | 取值 | 单位 | 补充 |
---|---|---|---|---|
android:fromDegrees | 起始角度 | 0 ~ 360 | 度 | 以浮点数字表示,代表相对自身原始位置的像素值 |
android:toDegrees | 结尾角度 | 0 ~ 360 | 度 | 如果以num%p表示,代表相对于父类组件的百分比 |
android:pivotX android:pivotY | 旋转中心的 X / Y坐标值 | 0 ~ 360 | 数字、num%、num%p | 数字方式代表相对于自身左边缘的像素值, num%方式代表相 对于自身左边缘或顶边缘的百分比, num%p方式代表相对于父容器的左边缘或顶边缘的百分比 |
通用语法
属性 | 含义 | 取值 | 单位 | 补充 |
---|---|---|---|---|
android:fillAfter= | 动画执行完之后保持最后的状态 | true / false | 布尔值 | |
android:fillBefore | 动画执行完前保持状态 | true / false | 布尔值 | |
android:duration | 动画持续的时间 | 0 ~ ∞ | 毫秒 | |
android:interpolator | 动画持续的时间 | 插值器 | 对象 | 下一标签有说明 |
android:repeatCount | 动画的重复次数 | 0 ~ ∞ | int | |
android:RepeatMode | 定义重复的行为 | 1 / 2 | int | 1:重新开始 2:plays backward |
android:startOffset | 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画 | 0 ~ ∞ | long | |
android:zAdjustment | 定义动画的Z Order的改变 | 0 / 1 / -1 | int | 0:保持Z Order不变 1:保持在最上层 -1:保持在最下层 |
Animation interpolator 插值器
类型 | 含义 |
---|---|
AccelerateDecelerateInterpolator | 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速 |
AccelerateInterpolator | 在动画开始的地方速率改变比较慢,然后开始加速 |
CycleInterpolator | 动画循环播放特定的次数,速率改变沿着正弦曲线 |
DecelerateInterpolator | 在动画开始的地方速率改变比较慢,然后开始减速 |
LinearInterpolator | 在动画的以均匀的速率改变 |
Android 系统自带的插值器
- @android:anim/accelerate_interpolator: 越来越快
- @android:anim/decelerate_interpolator:越来越慢
- @android:anim/accelerate_decelerate_interpolator:先快后慢
- @android:anim/anticipate_interpolator: 先后退一小步然后向前加速
- @android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点
- @android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点
- @android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点
- @android:anim/linear_interpolator:均匀速度。