如何确定触摸事件集的结束?

时间:2014-06-05 11:41:28

标签: android ontouchevent touch-event

我有一个小应用程序,它使用全屏活动,我可以拖动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;
        }
    });

0 个答案:

没有答案