1. 动画属性的设置:
- 通过 ObjectAnimator 创建属性动画时,可以设置更多的动画属性,例如设置重复次数、重复模式、开始延迟等。
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 0f, 1f);
// 设置动画重复次数(INFINITE表示无限循环)
alphaAnimator.setRepeatCount(ObjectAnimator.INFINITE);
// 设置动画重复模式(RESTART表示正序重复,REVERSE表示倒序重复)
alphaAnimator.setRepeatMode(ObjectAnimator.REVERSE);
// 设置动画开始延迟时间,单位毫秒
alphaAnimator.setStartDelay(500);
// 设置动画时长,单位毫秒
alphaAnimator.setDuration(1000);
alphaAnimator.start();
2. 值动画(ValueAnimator):
- ValueAnimator 是属性动画的基类,它可以用来计算属性值的变化,并通过监听器实时获取这些值。
// 创建一个值动画,设置初始值和结束值
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f);
// 设置动画时长
valueAnimator.setDuration(1000);
// 设置动画更新监听器
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
// 获取动画当前的属性值
float animatedValue = (float) animation.getAnimatedValue();
// 在这里进行属性值的操作,例如更新UI
// imageView.setAlpha(animatedValue);
}
});
// 启动值动画
valueAnimator.start();
3. 属性值的动态计算:
- 通过设置自定义的 TypeEvaluator,可以实现属性值的更加灵活的计算。
// 创建一个值动画,设置初始值和结束值
ValueAnimator valueAnimator = ValueAnimator.ofObject(new MyTypeEvaluator(), startValue, endValue);
// 设置动画时长
valueAnimator.setDuration(1000);
// 设置动画更新监听器
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
// 获取动画当前的属性值
Object animatedValue = animation.getAnimatedValue();
// 在这里进行属性值的操作,例如更新UI
// textView.setText(String.valueOf(animatedValue));
}
});
// 启动值动画
valueAnimator.start();
4. 属性动画的高级应用:
- 使用 AnimatorSet 可以将多个属性动画组合成一个整体,实现更复杂的动画效果。
// 创建多个属性动画
ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 0f, 1f);
ObjectAnimator translationXAnimator = ObjectAnimator.ofFloat(imageView, "translationX", 0f, 200f);
// 使用AnimatorSet组合多个属性动画
AnimatorSet animatorSet = new AnimatorSet();
// 顺序播放动画
// animatorSet.playSequentially(alphaAnimator, translationXAnimator);
// 同时播放动画
animatorSet.playTogether(alphaAnimator, translationXAnimator);
// 设置动画时长
animatorSet.setDuration(1000);
// 启动动画
animatorSet.start();
这是关于 Android 属性动画的一些进阶信息,包括动画属性的设置、值动画、属性值的动态计算和属性动画的高级应用。属性动画的灵活性使其适用于各种复杂的动画场景。
转载请注明出处:http://www.zyzy.cn/article/detail/15235/Android