2017-05-27 163 views
1

我在屏幕中央有一个圆圈,里面有一个ImageView + TextView。我还有两个ImageView + TextView,一个在屏幕的顶部,另一个在屏幕的底部。 Here's the UI mockup我的要求是:如何在Android中使用动画将视图移动到另一个视图?

我想顶ImageView + TextView的副本和底部ImageView + TextView的副本在动画中移动进入这个圈子的中心,从而改变圈内的TextView的价值。

例如:

说顶部的TextView已经值200和底部的TextView已经值300。我想的那些值(例如100或150)的一部分进行动画和移动到圆圈,但原始值200 300应该保持在同一位置。

我试过使用TranslateAnimation。不过,我面临的问题是找到中心圆的x和y坐标。它不完全走向圆圈的中心。原来的view's位置不保留。

TranslateAnimation animation = new 
TranslateAnimation(startLayout.getX(),endLayout.getX(), 
startLayout.getY(),endLayout.getY); 
        animation.setDuration(1000); 
        animation.setFillAfter(false); 
        startView.startAnimation(animation); 

startLayout是ImageView和TextView所在的线性布局。 请帮忙!谢谢!

+0

没有答案了吗? – Rakesh

回答

0

我有同样的问题,我固定使用一个代码(抱歉,是在科特林,但工作原理是一样在Java中)。让我们说viewFirst要达到viewTwo位置:

(请勿使用) :

   viewFirst.animate() 
         .translationX(viewSecond.x) 
         .translationY(viewSecond.y) 
         .setDuration(1000) 
         .withEndAction { 
         //to make sure that it arrives, 
         //but not needed actually these two lines 
          viewFirst.x = viewSecond.x 
          viewFirst.y = viewSecond.y 
         } 
         .start() 

(使用此解决方案):

   viewFirst.animate() 
         .x(viewSecond.x) 
         .y(viewSecond.y) 
         .setDuration(1000) 
         .withEndAction { 
         //to make sure that it arrives, 
         //but not needed actually these two lines 
          viewFirst.x = viewSecond.x 
          viewFirst.y = viewSecond.y 
         } 
         .start() 
相关问题