我正在为android构建一个远程鼠标应用程序,我现在有鼠标并单击即可工作。 OnGestureListener或OnDoubleTapListener的功能。
我正在使用onScroll方法来获取手指运动并将其通过HTTP请求发送到计算机上运行的服务器
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
String my_url = "http://192.168.1.3:8500/"+(int)distanceX+"+"+(int)distanceY;
new MyHttpRequestTask().execute(my_url,"");
return true;
}
和onSingleTapUp用于点击事件
@Override
public boolean onSingleTapUp(MotionEvent e) {
new MyHttpRequestTask().execute("http://192.168.1.3:8500/click","");
return true;
}
关于如何实现双击和拖动的任何想法?
最佳答案
我认为双击不是执行此操作的最佳手势...但是,如果需要,可以使用OnDoubleTapListener(see the documentation)进行双击检测,如果需要,可以使用相同的“ onScroll”方法(我建议改写“ onTouchEvent”)来管理拖动。在这种情况下,您必须知道在单击或双击后是否调用onScroll。您可以使用这样的枚举:
private enum State{NORMAL, DOUBLETAPPED}
private State s=State.NORMAL;
现在,在您的OnDoubleTapListener中,您必须说“嘿!我已经执行了双击”。
@Override
onDoubleTapEvent(MotionEvent e){
s=State.DOUBLETAPPED;
}
因此,您可以以正确的方式管理滚动:
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float, distanceY) {
if(s.equals(State.DOUBLETAPPED))
//do what you want
return true;
}
当检测到
s=State.NORMAL;
时,不要忘记执行MotionEvent.ACTION_UP
!