我试图在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点设为静态,但这没有帮助。
非常感谢任何帮助。
答案 0 :(得分:0)
这听起来可能违反直觉,但动画视图不会改变其位置。您的代码正在演示它。当你这样做时:
topPoint = pointer.getTop();
每次都获得相同的值。
您需要在动画结束时更改指针的位置。
This answer显示其他人是如何做到的。
其他注意事项
如果您仅定位SDK 11及更高版本,则可以使用对象动画制作工具。 Here is a little intro它。
如果要中断动画,可以检查其状态,并找出当前的y偏移量。您可以在开始动画之前将其添加到视图的位置。 Here is一个例子。