1. 动画估值器(TypeEvaluator
)
使用估值器可以计算动画元素的目标属性值,例如ArgbEvaluator
可以在颜色变化的动画中计算出当前的颜色,使用方式如下:
// 构造ArgbEvaluator对象
val argbEvaluator = ArgbEvaluator()
// fraction 通常来自差值器算出的百分比
val fraction = 0.5f
// 这里表示一个从蓝变红的动画中,当差值器的值是0.5f时,颜色应该处于何种状态
val color = (argbEvaluator.evaluate(fraction, Color.BLUE, Color.RED) as Int)
除ArgbEvaluator
外,Android还默认提供多种估值器,如IntEvaluator
、FloatEvaluator
、PointFEvaluator
2. Property
这是在属性动画中用到的类,常见的子类有IntProperty
、FloatProperty
, 该类可以方便地在动画中设置View的各个属性,新建一个自定义Property用作在属性动画中修改View的高度,示例如下:
@RequiresApi(api = Build.VERSION_CODES.N)
public class HeightProperty extends IntProperty<View> {
public PropertyHeight() {
super("PropertyHeight");
}
@Override
public void setValue(View object, int value) {
object.getLayoutParams().height = value;
object.setLayoutParams(object.getLayoutParams());
}
@Override
public Integer get(View object) {
return object.getLayoutParams().height;
}
}
HeightProperty
使用示例如下
// 获取到要做动画的View对象
val view = findViewById<View>(R.id.progress)
// 构造动画对象
val pullA = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofInt(HeightProperty(), 700, 1200))
.also {
it.duration = 900L
}
// 开启动画
pullA.start()
网友评论