如何在Android中使用动画将视图移动到另一个视图?
问题描述:
我在屏幕中央有一个圆圈,里面有一个ImageView
+ TextView
。我还有两个ImageView
+ TextView
,一个在屏幕的顶部,另一个在屏幕的底部。 我的要求是:如何在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所在的线性布局。 请帮忙!谢谢!
答
我有同样的问题,我固定使用一个代码(抱歉,是在科特林,但工作原理是一样在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()
没有答案了吗? – Rakesh