Android:使用动画制作器收缩动画

时间:2015-05-07 18:38:42

标签: android animation android-animation objectanimator

我通过以下方式制作动画,

有两个布局(都是相对布局),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会缩小,但是纵横比永远不会保持,我的意思是动画遵循这些步骤,

  1. 首先,身高会降低。
  2. 接下来宽度会减小。
  3. 身高再次降低。
  4. 再次宽度。
  5. 这种情况继续下去,一旦达到最终给定比率(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中有一种方法可以获得相同的收缩效果吗?

0 个答案:

没有答案