SimpleOnGestureListener,onDoubleTapEvent在片刻之后暂停,直到手势结束

时间:2012-02-18 21:30:28

标签: android

我正在尝试使用双击并按住/移动来实现平移动作(单击并按住/移动已经由旋转动作执行)。但是,onDoubleTapEvent函数在用户移动时仅接收大约18个MotionEvent,然后暂停直到用户完成手势,此时它将在实际完成手势之前再接收一个MotionEvent。

因此,即使用户仍在拖动,用户也可以将对象平移一小段距离,此时它将冻结。当用户释放时,对象将捕捉到正确的位置。我希望用户能够只要她/他想要拖动/平移。任何提示都会非常感激。

这是onDoubleTap和onDoubleTapEvent函数的实现:

            @Override
            public boolean onDoubleTap(MotionEvent event) {

                eventpan.x = event.getX();
                eventpan.y = event.getY();

                return true;
            }

            @Override
            public boolean onDoubleTapEvent(MotionEvent event) {

                oglrenderer.panx +=   0.005f * ( event.getX() - eventpan.x);
                oglrenderer.pany += - 0.005f * ( event.getY() - eventpan.y);

                eventpan.x = event.getX();
                eventpan.y = event.getY();

                return true;
            }  

这只是改变了渲染器中的平移的x和y坐标,onDraw函数基本上是这样的:

public void onDrawFrame(GL10 gl) {          

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    gl.glLoadIdentity();                        
    gl.glPushMatrix();                 

    gl.glTranslatef(panx, pany, zoom); 

    object.draw(gl);               

    gl.glPopMatrix();  
    gl.glFlush();


}

我目前正在为Android 4.0,API级别14进行设计。同样,任何提示都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

与提示相比,答案并非如此。我正在尝试解决类似的问题,我发现LongPress事件发生了,这结束了大多数未来的事件。了解更多;似乎GestureDetector类强制在LongClick事件上返回true,或类似的东西。我会继续关注它,希望很快能找到合适的解决方案。

编辑:所以目前我去了setIsLongpressEnabled(false)以允许双击滚动工作。不太好,因为我最终也想要一个LongClick手势,但它现在正在运作。