使用旧视图位置的对象动画师

时间:2015-12-24 15:50:53

标签: android animation

我有一个简单的cardview topCard,想要将它从布局的中心转换到右侧并返回到初始位置。 使用object animator写了一些代码:

<div class="news"> 
       <script type="text/javascript">

           //some codes

       </script>

           needed content

       <div class="seperator">

           unneeded content

       </div>

 </div>

因此,我的视图正确转换为右侧,第二个动画不会移动到起始位置而是转移到 ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(topCard, "translationX", topCard.getWidth() + 150); objectAnimator.setDuration(1500); objectAnimator.start(); objectAnimator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationEnd(Animator animation) { ObjectAnimator translationX = ObjectAnimator.ofFloat(topCard, "translationX", - (topCard.getWidth() + 150)); translationX.setDuration(1500); translationX.start();

如何使用2个序列动画将视图转换为右侧并返回相同位置? 这是错误的结果 https://i.imgur.com/8SShfHL.gifv

1 个答案:

答案 0 :(得分:1)

您应该尝试将其放在@Override public void onAnimationEnd(Animator animation) { ObjectAnimator translationX = ObjectAnimator.ofFloat(topCard, "translationX", topCard.getWidth() + 150, - (topCard.getWidth() + 150)); translationX.setDuration(1500); translationX.start(); 中:

topCard.getWidth() + 150

请注意,我添加了topCard,使其成为e.target的起始位置。根据{{​​3}}:

  

构造并返回一个在浮点值之间设置动画的ObjectAnimator。单个值意味着该值是动画的值。 两个值表示起始值和结束值。