如果未指定android:interpolator,则默认插值器是什么

时间:2018-03-15 01:01:10

标签: android android-animation

在Android中,我知道我们可以通过XML定义动画。

例如,scale_button_up.xml可能类似于

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/linear_interpolator"
     android:fillBefore="true"
     android:fillAfter="true"
     android:fillEnabled="true">
    <scale
        android:duration="5000"
        android:fromXScale="0.25"
        android:fromYScale="0.25"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0.75"
        android:toYScale="0.75"/>
</set>

如果未指定android:interpolator="@android:anim/linear_interpolator",我想知道Android V21 +的默认行为是什么。

1 个答案:

答案 0 :(得分:1)

所有*Animation类都是Animation的子类,它处理在其构造函数中设置XML属性中指定的插值器。如果没有指定,则默认AccelerateDecelerateInterpolator在其ensureInterpolator()方法中设置。

/**
* Gurantees that this animation has an interpolator. Will use
* a AccelerateDecelerateInterpolator is nothing else was specified.
*/
protected void ensureInterpolator() {
    if (mInterpolator == null) {
        mInterpolator = new AccelerateDecelerateInterpolator();
    }
}