我正在尝试使用双击并按住/移动来实现平移动作(单击并按住/移动已经由旋转动作执行)。但是,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进行设计。同样,任何提示都会受到赞赏。
答案 0 :(得分:0)
与提示相比,答案并非如此。我正在尝试解决类似的问题,我发现LongPress事件发生了,这结束了大多数未来的事件。了解更多;似乎GestureDetector类强制在LongClick事件上返回true,或类似的东西。我会继续关注它,希望很快能找到合适的解决方案。
编辑:所以目前我去了setIsLongpressEnabled(false)以允许双击滚动工作。不太好,因为我最终也想要一个LongClick手势,但它现在正在运作。