Android 棒棒糖中的比例转换

Scale Transition in Android Lollipop

我在 github 项目中发现了这个 Scale transition。但我发现它仍然有缺陷:视图从一开始就可见,然后动画从无到全。预期结果是:视图在动画之前从一开始就不可见。

这是代码:

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class Scale extends Visibility {
    public Scale(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public Scale() {
        super();
    }

    @Override
    public Animator onAppear(ViewGroup sceneRoot, View view,    TransitionValues startValues, TransitionValues endValues) {
        return createScaleAnimator(view, 0, 1);
    }

    @Override
    public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
        return createScaleAnimator(view, 1, 0);
    }

    public Animator createScaleAnimator(View view, float startScale, float endScale) {
        PropertyValuesHolder holderX = PropertyValuesHolder.ofFloat("scaleX", startScale, endScale);
        PropertyValuesHolder holderY = PropertyValuesHolder.ofFloat("scaleY", startScale, endScale);
        ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(view, holderX, holderY);
        return animator;
    }
}

使用方法如下:

<transition
    class="com.jimulabs.googlemusicmock.transition.Scale"
    android:startDelay="500">
    <targets>
        <target android:targetId="@id/fab" />
    </targets>
</transition>

幻灯片切换按预期工作,因为它隐藏了动画之前的视图。

有人知道天平 class 出了什么问题吗?谢谢

初始比例应该在createAnimtorScale中设置。

view.setScaleX(startScale);
view.setScaleY(startScale);

否则在动画器运行之前初始比例不会开始。