如何在Android中使用动画将一个视图移动到另一个视图?
我在屏幕中央有一个圆圈,里面有一个如何在Android中使用动画将一个视图移动到另一个视图?,android,animation,view,android-animation,layout-animation,Android,Animation,View,Android Animation,Layout Animation,我在屏幕中央有一个圆圈,里面有一个ImageView+TextView。我还有两个ImageView+TextView,一个在屏幕的顶部,另一个在底部。 我的要求是: 我想要一个顶部图像视图+文本视图的副本和一个底部图像视图+文本视图的副本,以便在动画中移动到圆的中心,从而更改圆内文本视图的值 例如: 假设顶部textView的值为200,底部textView的值为300。我希望这些值中的一部分(比如100或150)设置动画并移动到圆中,但原始值200和300应保持在同一位置 我尝试过使用Tra
ImageView
+TextView
。我还有两个ImageView
+TextView
,一个在屏幕的顶部,另一个在底部。
我的要求是:
我想要一个顶部图像视图
+文本视图
的副本和一个底部图像视图
+文本视图
的副本,以便在动画中移动到圆的中心,从而更改圆内文本视图的值
例如:
假设顶部textView的值为200,底部textView的值为300。我希望这些值中的一部分(比如100或150)设置动画并移动到圆中,但原始值200和300应保持在同一位置
我尝试过使用TranslateAnimation
。然而,我面临着寻找中心圆的x和y坐标的问题。它并不是精确到圆的中心。此外,原始视图的
位置也不会保留
TranslateAnimation animation = new
TranslateAnimation(startLayout.getX(),endLayout.getX(),
startLayout.getY(),endLayout.getY);
animation.setDuration(1000);
animation.setFillAfter(false);
startView.startAnimation(animation);
startLayout是ImageView和TextView所在的线性布局。
请帮忙!谢谢 我也遇到了同样的问题,我通过使用下一个代码修复了这个问题(抱歉在Kotlin中,但在Java中也是如此)。假设viewFirst想要达到viewTwo的位置: (不要使用): (使用此解决方案): 使用
getX()
和getY()
方法以像素为单位定义视图的位置,但使用的构造函数定义的浮点类型值必须是0.0f到1.0f之间的值
这是使用视图的像素位置的另一个选项:
viewFirst.animate()
.x(viewSecond.getX())
.y(viewSecond.getY())
.setDuration(1000).withEndAction(new Runnable() {
@Override
public void run() {
viewFirst.setX(tv2.getX());
viewFirst.setY(tv2.getY());
}
}).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()
viewFirst.animate()
.x(viewSecond.getX())
.y(viewSecond.getY())
.setDuration(1000).withEndAction(new Runnable() {
@Override
public void run() {
viewFirst.setX(tv2.getX());
viewFirst.setY(tv2.getY());
}
}).start();