animator实现组合动画
1、创建xml文件
提示:先创建Animator的xml文件
2、代码示例
提示:这里先给出xml代码后面2.1中有animator标签的相应解释
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 插值器的使用:android:interpolator="@android:anim/bounce_interpolator" -->
<!-- X轴方向平移 -->
<objectAnimator
android:interpolator="@android:anim/bounce_interpolator"
android:duration="2000"
android:propertyName="translationX"
android:valueFrom="-500"
android:valueTo="0"
android:valueType="floatType" />
<!-- Y轴方向平移 -->
<objectAnimator
android:duration="2000"
android:propertyName="translationY"
android:valueFrom="-500"
android:valueTo="0"
android:valueType="floatType" />
<!-- X轴横向拉伸 -->
<objectAnimator
android:duration="2000"
android:propertyName="scaleX"
android:valueFrom="1"
android:valueTo="2"
android:valueType="floatType" />
<!-- Y轴纵向拉伸 -->
<objectAnimator
android:duration="2000"
android:propertyName="scaleY"
android:valueFrom="1"
android:valueTo="2"
android:valueType="floatType" />
<!-- 透明度 -->
<objectAnimator
android:duration="1500"
android:propertyName="alpha"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType" />
<!-- 旋转 -->
<objectAnimator
android:duration="3000"
android:propertyName="rotation"
android:valueFrom="0"
android:valueTo="360"
android:valueType="floatType" />
</set>
2.1、animator标签的字段
animator标签 | 说明 |
---|---|
android:duration | 动画播放时长 |
android:propertyName | 动画属性 |
android:valueFrom | 动画初始值 |
android:valueTo | 动画结束值 |
android:startOffset | 动画激活延时 |
android:repeatCount | 动画重复次数 |
android:repeatMode | 动画重复模式,repeat和reverse分别对应正序和倒序 |
android:valueType | 取值参数类型 |
android:interpolator | 设置插值器 |
2.2、android:propertyName属性
属性 | 说明 |
---|---|
translationX | X轴方向平移 |
translationY | Y轴方向平移 |
scaleX | X轴横向拉伸 |
scaleY | Y轴纵向拉伸 |
alpha | 透明度 |
rotation | 旋转 |
3、ordering设置
这里主要是展示 set 中的 ordering 动画执行顺序
ordering 标签里的值包括有:together 和 sequentially
together 和 sequentially 表示的是 同时执行 和 顺序执行
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<set android:ordering="sequentially">
<objectAnimator
android:duration="2000"
android:interpolator="@android:anim/anticipate_overshoot_interpolator"
android:propertyName="translationY"
android:valueFrom="0"
android:valueTo="1200"
android:valueType="floatType" />
</set>
</set>
4、如何使用写好的xml?
最后XML文件是编写好了,那么我们如何在代码中把文件加载进来并将动画启动呢?只需调用如下代码即可:
Animator animator = AnimatorInflater.loadAnimator(context, R.animator.anim_file);
animator.setTarget(view);
animator.start();
5、插值器 Interpolator的使用
Interpolator 叫插值器,也叫做加速器,用来指定动画如何变化的量。
5.1、常见的插值器
系统常见的插值器有如下几种:
插值器 | 说明 |
---|---|
AccelerateDecelerateInterpolator | 其变化开始和结束速率较慢,中间加速 |
AccelerateInterpolator | 其变化开始速率较慢,后面加速 |
DecelerateInterpolator | 其变化开始速率较快,后面减速 |
LinearInterpolator | 其变化速率恒定 |
AnticipateInterpolator | 沿着开始相反的方向先运行 |
OvershootInterpolator | 结束后顺着结束的运行规律让然运行一段时间 |
AnticipateOvershootInterpolator | AnticipateInterpolator 和 OvershootInterpolator 的结合 |
BounceInterpolator | 自由落体规律运动 |
CycleInterpolator | 其速率为正弦曲线 |
LinearOutSlowInInterpolator | 其变化先匀速再减速 |
FastOutSlowInInterpolator | 其变化是先加速,然后减速 |
FastOutLinearInInterpolator | 其变化先加速然后匀速,本质还是加速运动 |
5.2、插值器的使用
在xml中可以直接设置对应动画的插值器
还可以在代码中进行插值器的设置
结尾
后续还将会在此文中加入 自定义插值器 的使用
欢迎有兴趣的小伙伴探讨和关注