在Android Q中,用户可以启用全屏手势模式。我想检测设备是否处于全屏手势模式。我在文档中找不到任何内容。如何在运行时以编程方式进行操作?
Java或kotlin语言的答案是可以的。
任何官方API或解决方法...
答案 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()
希望这会有所帮助!