2015-05-04 48 views
0

我在使用GestureDetector与Samsung S6时遇到了一些问题。该MotionEvent流程如下:三星s6点击检测问题

MotionEvent { action=ACTION_DOWN, id[0]=0, x[0]=5230.164, y[0]=995.625, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=9448672, downTime=9448672, deviceId=4, source=0x1002 } 
MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=5230.164, y[0]=994.6875, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=9448687, downTime=9448672, deviceId=4, source=0x1002 } 
MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=5223.505, y[0]=1001.4341, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=2, eventTime=9448731, downTime=9448672, deviceId=4, source=0x1002 } 
MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=5217.2773, y[0]=1009.2318, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=9448748, downTime=9448672, deviceId=4, source=0x1002 } 
MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=5214.025, y[0]=1014.31665, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=2, eventTime=9448764, downTime=9448672, deviceId=4, source=0x1002 } 
MotionEvent { action=ACTION_UP, id[0]=0, x[0]=5214.025, y[0]=1014.31665, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=9448785, downTime=9448672, deviceId=4, source=0x1002 } 

如果我按我的手指上,它通常最终不被点击,我必须要精确,我的指尖获得点击。

似乎移动事件很容易在这个特定的设备上触发。任何人都知道解决方法或一些影响点击检测的调整?

谢谢。

+0

其他设备呢?根据我的经验,这是正常的行为。我的意思是,即使我保持手指,而不是移动它显示我,我稍微移动它。 – Yurets

+0

我认为屏幕上的dpi越多,它就越容易处理它,因此我一直在考虑是否有一些魔术变量可以改变值,以便更轻松地点击点击。 – Niko

+0

我从来没有遇到过这种情况,但是我认为不是,因为它只是回应了刚发出的行动而已。 – Yurets

回答

0

对我而言,我最终修改了GestureDetector私人领域mTouchSlopSquare以获得更高的价值。

try { 
     Field field = GestureDetector.class.getDeclaredField("mTouchSlopSquare"); 
     field.setAccessible(true); 
     field.set(mGestureDetector, myValue); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }