ObjectAnimator仅影响一次

时间:2015-06-26 05:42:25

标签: android

我动态添加一些按钮,我想在单击一个按钮时,这些按钮更改文本并更改屏幕上的位置。

这是我在OnClick方法中使用的代码:

               for (Button button : mNumberButtons) {
                    button.setText(""+new Random().nextInt(10));
                    ObjectAnimator translateTo50 = ObjectAnimator.ofFloat(
                            button, "TranslationY", 50);
                    translateTo50.start();
                }

当我第一次点击按钮时,所有按钮都会更改文本,并且还会按照我的预期更改位置。 但是当我第二次单击按钮时,所有按钮都会更改文本但不会更改位置。所以我认为原因是ObjectAnimator。

有谁能告诉我这个问题的根本原因是什么?

1 个答案:

答案 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();
                }

当然,您必须检查屏幕的边界值,以便它不会出现在屏幕之外。