Android UI - 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:均匀速度。
发布了53 篇原创文章 · 获赞 19 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_33443989/article/details/103819775