我目前正在构建一个文件管理器,它将使用手势进行操作,这就是为什么我需要这种手势。我已经尝试过在这里搜索一些类似的主题,但我只是找不到一些东西,可以给我一些想法来做这件事。我发现的只是SimplegestureListener(我已经使用过)和GestureOverlayView(我认为这对我的应用程序不好)。我想我可以应用onfling方法的想法,但我意识到它不适用于我瞄准的L形手势…简单来说,我想知道的是:
所以,我需要弄清楚的是,如何检测水平和垂直滑动之间的点。有没有其他方法可以用来检测listview上的那个点?我只想知道怎么做,我知道我能搞清楚。:)
最佳答案
您需要为listview实现一个onTouch()
事件来检测用户触摸模式。下面是一个伪代码,说明我将如何处理此问题:
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
//Get the X and Y values the user touched down first
mDownX = motionEvent.getRawX();
mDownY = motionEvent.getRawY();
break;
case MotionEvent.ACTION_MOVE: {
float deltaX = motionEvent.getRawX() - mDownX;
float deltaY = motionEvent.getRawY() - mDownY;
if (deltaX > myMoveToTheRightThreashold
&& Math.abs(deltaY) < myNoYmoveThreashold) {
moveToRight = true;
}
if (moveToRight && deltaY > myMoveUpThreshold) {
myLShapedGesture = true;
return true;
}
break;
}
return false;
}
我根本没有测试这个,我只是想告诉你如何接近。您可能需要添加一个
case MotionEvent.ACTION_UP
来检测用户何时停止触摸设备并在那里执行所需的操作。希望有帮助。