为什么我无法获取getEdgeFlags()
是否能够检测到边缘触摸?
我延长了DrawerLayout
,然后做了:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
int edgeFlags = ev.getEdgeFlags();
Log.d(TAG,String.valueOf(edgeFlags));
if ((MotionEvent.EDGE_LEFT&edgeFlags)!=0 || (MotionEvent.EDGE_RIGHT&edgeFlags)!=0)
Log.d(TAG,"BEZEL intercept.");
else
Log.d(TAG,"Regular intercept.");
return super.onInterceptTouchEvent(ev);
}
我从来没有检测到任何边缘,edgeFlags
始终为 0。
使用 4.4.2 在 G2 上测试,使用 4.3.1 在 S3 上测试,并使用 4.2.2 模拟 S4。我知道只有ACTION_DOWN
触摸得到边缘检测,但我从来没有检测到任何边缘。尽管如此,抽屉布局显然还是设法检测到它,因为它可以通过边缘滑动很好地打开抽屉。我通过子类化得到相同(缺乏)的结果ViewPager
也。压倒一切onTouchEvent()
方法也没有帮助。
我究竟做错了什么?
对于某些硬件来说,检测显示屏边缘的触摸太困难了,因此 Android 应该为您设置适当的标志。这种情况并不总是发生,因此您不应依赖正确设置的边缘标志。
一种选择是使用实际屏幕像素高度和宽度以及从 MotionEvent 返回的 x,y 坐标。看如何检测屏幕一部分内的触摸 https://stackoverflow.com/questions/41993859/android-how-can-i-detect-when-user-touch-left-20-of-view-area.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)