我在github项目中找到了这个Scale转换。但我发现它仍有缺陷:视图从一开始就可见,然后动画从无到有,从全开始。预期的结果是:从动画开始之前看不到视图。
这是代码:
@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>
幻灯片切换按预期工作,因为它会在动画之前隐藏视图。
任何人都知道Scale课程有什么问题?感谢。
答案 0 :(得分:2)
初始比例应在createAnimtorScale中设置。
view.setScaleX(startScale);
view.setScaleY(startScale);
否则初始比例直到动画师运行才开始。