我动态添加一些按钮,我想在单击一个按钮时,这些按钮更改文本并更改屏幕上的位置。
这是我在OnClick方法中使用的代码:
for (Button button : mNumberButtons) {
button.setText(""+new Random().nextInt(10));
ObjectAnimator translateTo50 = ObjectAnimator.ofFloat(
button, "TranslationY", 50);
translateTo50.start();
}
当我第一次点击按钮时,所有按钮都会更改文本,并且还会按照我的预期更改位置。 但是当我第二次单击按钮时,所有按钮都会更改文本但不会更改位置。所以我认为原因是ObjectAnimator。
有谁能告诉我这个问题的根本原因是什么?
答案 0 :(得分:1)
50
是一个静态值,所以第一次点击按钮时它会转到x = 50的位置,但是在下次点击时它已经在x = 50
,所以它不会翻译。您可能希望相对于Button
的当前位置设置目标x值,例如 -
for (Button button : mNumberButtons) {
button.setText(""+new Random().nextInt(10));
ObjectAnimator translateTo50 = ObjectAnimator.ofFloat(
button, "TranslationY", button.getX() + 50);
translateTo50.start();
}
当然,您必须检查屏幕的边界值,以便它不会出现在屏幕之外。