gpt4 book ai didi

android - 将 Button 移动到另一个 Button 的位置

转载 作者:行者123 更新时间:2023-11-29 20:56:03 24 4
gpt4 key购买 nike

我是这个论坛的新手,但我已经阅读了很长时间。

我正在构建一个 Android 应用程序,一个纸牌游戏,我正在尝试创建动画以使其可玩。我的问题是:是否可以从代码构建一个 TranslateAnimation,使用我想要动画的按钮的位置,到另一个现有按钮或 View 的位置?

我已经尝试过 .getLocationInWindow() 之类的方法,但这些值不是我正在寻找的值。

预先感谢您的每一个回复。

最佳答案

您需要记住一些事情。如果您想使用翻译动画,您需要提供沿两个轴(x 和 y)的距离差。所以你的代码看起来更不像这样:

View viewToBeMoved = findViewById(R.id.view_to_be_moved);
View destinationView = findViewById(R.id.destination_view);
int xDiff = destinationView.getLeft() - viewToBeMoved.getLeft();
int yDiff = destinationView.getTop() - viewToBeMoved.getTop();
viewToBeMoved.animate().translationXBy(xDiff).translationYBy(yDiff);

您还需要记住,只有当 viewToBeMoveddestinationView 具有相同的父级时,此代码才有效(因此 getTop()getLeft() 方法返回正确的值)。

编辑:

对于不属于同一个父 View 的 View ,您可以尝试这样的操作:

View viewToBeMoved = findViewById(R.id.view_to_be_moved);
int[] viewToBeMovedPos = new int[2];
viewToBeMoved.getLocationOnScreen(viewToBeMovedPos);

View destinationView = findViewById(R.id.destination_view);
int[] destinationViewPos = new int[2];
destinationView.getLocationOnScreen(destinationViewPos);

int xDiff = destinationViewPos[0] - viewToBeMovedPos[0];
int yDiff = destinationViewPos[1] - viewToBeMovedPos[1];
viewToBeMoved.animate().translationXBy(xDiff).translationYBy(yDiff);

您可以使用 getLocationInWindow 而不是 getLocationOnScreen 但在这两种情况下请确保您 "invoke it AFTER layout has happened"

关于android - 将 Button 移动到另一个 Button 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com