Android Animator之XML动画

(一) 使用XML编写动画。

使用 XML 编写动画的优点是:方便重用、可读性较高。

1、 ValueAnimator 动画:res/animator/value_animator_01.xml

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<animator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:interpolator="@android:anim/accelerate_interpolator"
android:repeatCount="2"
android:repeatMode="reverse"
android:startOffset="1000"
android:valueFrom="0"
android:valueTo="10"
android:valueType="intType" />

AnimatorInflater 加载动画并执行:

1
2
3
4
5
6
7
8
9
10
11
// 加载属性动画
ValueAnimator animator = (ValueAnimator) AnimatorInflater.loadAnimator(this, R.animator.value_animator_01);
// 添加(值)数据更新监听
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int value = (int) animation.getAnimatedValue();
DebugLog.e("value:" + value);
}
});
animator.start();

2、 ObjectAnimator 动画:res/animator/object_animator_01.xml

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:interpolator="@android:interpolator/linear"
android:propertyName="alpha"
android:repeatCount="2"
android:repeatMode="reverse"
android:startOffset="1000"
android:valueFrom="0.1F"
android:valueTo="1F"
android:valueType="floatType" />

AnimatorInflater 加载动画并执行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 加载属性动画
ObjectAnimator animator = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.object_animator_01);
// 设置目标对象
animator.setTarget(textView);
// 添加动画监听
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
DebugLog.e("动画开始");
}

@Override
public void onAnimationEnd(Animator animation) {
DebugLog.e("动画结束");
}
});
animator.start();

3、 ValueAnimator 组合动画:res/animator/animator_set_01.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">

<objectAnimator
android:duration="3000"
android:propertyName="alpha"
android:valueFrom="0.1F"
android:valueTo="1F"
android:valueType="floatType" />

<set android:ordering="sequentially">
<objectAnimator
android:duration="1500"
android:propertyName="rotation"
android:valueFrom="0F"
android:valueTo="180F"
android:valueType="floatType" />
<objectAnimator
android:duration="1500"
android:propertyName="rotation"
android:valueFrom="180F"
android:valueTo="0F"
android:valueType="floatType" />
</set>
</set>

AnimatorInflater 加载组合动画并执行:

1
2
3
4
5
// 加载组合属性动画
Animator animator = AnimatorInflater.loadAnimator(this, R.animator.animator_set_01);
// 设置目标对象
animator.setTarget(textView);
animator.start();

Hawky wechat
欢迎订阅我的微信公众号
坚持原创技术分享,您的支持将鼓励我继续创作!

分享