0

我正在尝试在 android 应用程序中为屏幕周围的指针设置动画。

我使用 imageview 作为相对布局内的指针,如下所示:

    final RelativeLayout container = (RelativeLayout) findViewById(R.id.container);
    pointer =  (ImageView) findViewById(R.id.pointer);
    pointer.animate().setDuration(2000);

然后,每次单击按钮时,我都想将指针向上移动 10 个像素:

    // ONCLICK LISTENER FOR LEFT BUTTON
            btnUp.setOnClickListener(new View.OnClickListener() {
                public void onClick(View arg0) {

                    //get positon of pointer
                     leftPoint = pointer.getLeft();
                     topPoint = pointer.getTop();


                    int xValue = container.getWidth() - pointer.getWidth();
                    int yValue = container.getHeight() - pointer.getHeight();
                    pointer.animate().x(leftPoint).y(topPoint-10);


                }
            });

这在我第一次单击按钮时有效,但以后不会移动它。我尝试将 int 点设为静态,但这没有帮助。

非常感谢任何帮助。

4

1 回答 1

0

这听起来可能违反直觉,但动画视图不会改变它的位置。您的代码正在演示它。当您执行此行时:

topPoint = pointer.getTop();

你每次都得到相同的值。

您需要在动画结束时更改指针的位置。

这个答案显示了其他人是如何做到的。

其他注意事项

  • 如果您只针对 SDK 11 及更高版本,您可以使用对象动画师。 这是它的一个小介绍

  • 如果你想中断你的动画,你可以检查它的状态,并找出它当前的 y 偏移量。您可以在开始动画之前将其添加到视图的位置。 这是一个例子。

于 2013-06-08T16:09:49.270 回答