android - getEdgeFlags 总是返回 0?

标签 android

为什么我不能让 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 坐标。参见 How to detect touch within a portion of the screen .

关于android - getEdgeFlags 总是返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22167006/

相关文章:

android - ListView 无法滚动

android - 在sqlite中连接两个表

java - 检查是否选择了 RadioButton 后按钮不会切换 Activity

android导航 View 菜单项之前(左侧)的空白空间

java - 蓝牙打印在不同设备上从 Socket 抛出 IOException

java - 为什么这会返回错误的模数答案?

android - 在 Android 手机主屏幕上检测触摸或滑动

java - Android壁纸设置程序Bug

android - Android 中的服务生命周期

java - 使用 Parcelable 有什么优点?