我有一个小应用程序,它使用全屏活动,我可以拖动ImageView。
现在我的解决方案是这样的:我根据手指的拖动来改变ImageView的位置,所以基本上我将delta x(previousX - currentX)添加到ImageView的位置。现在的问题是确定previousX。它第一次运行正常,因为我测试它是否为0,如果它为空则表示应用程序刚启动而前一个x可以成为新的x,但拖动拖动后一旦移开手指就会变得难看,并且通过将手指放在与第一次完成拖动不同的位置再次开始拖动(因为它几乎不可能将它放在同一个地方。所以previousX是最后一次拖动的那个,所以当你开始第二次拖动时,它会将前一个x的x差异跳到新的。我需要改变另一种计算方式,或者确定手指什么时候离开从屏幕和一系列拖动事件结束。
这就是我的触摸事件代码:
@Override
public boolean onTouch(View v, MotionEvent event) {
LayoutParams layoutParams = (LayoutParams) img
.getLayoutParams();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int x_cord = (int) event.getRawX();
int y_cord = (int) event.getRawY();
if (x_cord > windowWidth) {
x_cord = windowWidth;
}
if (y_cord > windowHeight) {
y_cord = windowHeight;
}
if (previousX == 0) {
previousX = x_cord;
}
if (previousY == 0) {
previousY = y_cord;
}
layoutParams.leftMargin = layoutParams.leftMargin
+ (x_cord - previousX);
layoutParams.topMargin = layoutParams.topMargin
+ (y_cord - previousY);
img.setLayoutParams(layoutParams);
previousX = x_cord;
previousY = y_cord;
break;
default:
break;
}
return true;
}
});