为什么我不能让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()
方法也无济于事。
我做错了什么?
答案 0 :(得分:0)
对于某些硬件,很难检测到显示屏边缘的触摸,因此Android应该为您设置适当的标志。这并非总是会发生,因此您不应依赖于正确设置的边缘标志。 一种选择是使用实际屏幕像素的高度和宽度以及从MotionEvent返回的x,y坐标。参见How to detect touch within a portion of the screen。