如何在Android Q

时间:2019-06-20 15:21:39

标签: java android androidq

在Android Q中,用户可以启用全屏手势模式。我想检测设备是否处于全屏手势模式。我在文档中找不到任何内容。如何在运行时以编程方式进行操作?

Java或kotlin语言的答案是可以的。

任何官方API或解决方法...

3 个答案:

答案 0 :(得分:10)

您可以使用以下代码检查手势或导航模式

    public static int isEdgeToEdgeEnabled(Context context) {
        Resources resources = context.getResources();
        int resourceId = resources.getIdentifier("config_navBarInteractionMode", "integer", "android");
        if (resourceId > 0) {
            return resources.getInteger(resourceId);
        }
        return 0;
    }

isEdgeToEdgeEnabled函数返回的值如下:

  • 0:导航带有3个按钮

  • 1:使用2个按钮显示导航(Android P导航模式)

  • 2:全屏手势(Android Q上的手势)

答案 1 :(得分:1)

根据文档,您可以使用getSystemGestureInsets()https://developer.android.com/reference/android/view/WindowInsets.html#getSystemGestureInsets()

获取手势空间区域

如果为零,则被禁用

    ViewCompat.setOnApplyWindowInsetsListener(view, (v, insets) -> {
        if (insets.getSystemGestureInsets().bottom == 0 
            && insets.getSystemGestureInsets().left == 0
            && insets.getSystemGestureInsets().right == 0) 
        {
            //gestures enabled
        }
        return insets.consumeSystemWindowInsets();
    });

但是,我没有配备Android Q的设备,我可能错了

我在这篇文章中找到了它:https://developer.android.com/preview/features/gesturalnav

答案 2 :(得分:0)

根据文档,如果hasInsets()具有任何非零插入,则有一个true方法返回WindowInsets
https://developer.android.com/reference/android/view/WindowInsets#hasInsets()

我们可以这样使用

view.rootWindowInsets.hasInsets()

希望这会有所帮助!