相对视图中的多个动画

时间:2013-06-08 12:01:23

标签: android animation imageview relativelayout

我试图在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点设为静态,但这没有帮助。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

topPoint = pointer.getTop();

每次都获得相同的值。

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

This answer显示其他人是如何做到的。

其他注意事项

  • 如果您仅定位SDK 11及更高版本,则可以使用对象动画制作工具。 Here is a little intro它。

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