我通过以下方式制作动画,
有两个布局(都是相对布局),layout1,最初会隐藏,layout2最初会显示给用户。
一旦动画开始layout1,将变为可见,layout2将使用动画师缩放,如下所示,
Animator scalexAnimator = ObjectAnimator.ofFloat(layout2, "scaleX", 1f, 0f);
Animator scaleyAnimator = ObjectAnimator.ofFloat(layout2, "scaleY", 1f, 0f);
Animator pivotxAnimator = ObjectAnimator.ofFloat(layout2, "pivotX", <maxWidth>);
Animator pivotyAnimator = ObjectAnimator.ofFloat(layout2, "pivotY", <maxheight/2>);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(pivotxAnimator, pivotyAnimator, scalexAnimator, scaleyAnimator);
animatorSet.start();
这会启动动画并且layout2会缩小,但是纵横比永远不会保持,我的意思是动画遵循这些步骤,
这种情况继续下去,一旦达到最终给定比率(0.5),它就会停止。
这不会产生缩小效果,我尝试使用动画类,如下所示,
Animation shrinkAnimation = new ScaleAnimation(1,0.5f,1,05f,Animation.RELATIVE_TO_SELF,1f, Animation.RELATIVE_TO_SELF, 0.5f);
layout2.startAnimation(shrinkAnimation);
这将完美地工作,我将得到一个精确的缩小效果,保持纵横比,但我在上面的实现中遇到的问题是layout2的位置被更改,但按钮保持其位置(layout2有4个按钮和按钮单击适用于旧按钮位置,即使用户在那里看不到任何按钮,我在一些帖子中读到这是预期的),所以我不得不手动禁用按钮,这是一个开销,所以我想避免使用Animation类,去了ObjectAnimator。
那么在ObjectAnimator中有一种方法可以获得相同的收缩效果吗?