繁体   English   中英

如何实现双击和拖动?

[英]How to implement double tap and drag?

我正在为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( 请参阅文档 )进行双击检测,如果需要,可以使用相同的“ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM