我正在尝试以编程方式获取应用的可用屏幕区域。
为此,我使用getWindowManager().getDefaultDisplay().getSize()
。但是我不太确定与“默认显示窗口”相对应的屏幕区域是什么。
除导航栏外,它似乎包含整个屏幕(包括通知栏)。它是否正确 ?有例外吗?
答案 0 :(得分:2)
来自文档:
获取显示的大小(以像素为单位)。
请注意,此值不应用于计算布局,因为a 设备通常会有屏幕装饰(如状态栏) 沿着显示器的边缘,减少了应用程序的数量 从这里返回的尺寸可用的空间。布局应该改为 使用窗口大小。
根据显示器的当前旋转调整尺寸。
此方法返回的大小不一定代表 显示的实际原始大小(原始分辨率)。返回的大小 可以调整以排除某些系统装饰元素 始终可见。它也可以缩放以提供兼容性 较旧的应用程序,最初设计用于较小的显示器。
强调我的。所以,是的,他们可能会从中排除导航栏,但不一定。
答案 1 :(得分:0)
是的,它包括您的应用程序可用的所有空间(即,不计算操作系统级别组件,如状态和通知栏)。
但是,大小确实会根据是否使用隐藏通知和状态栏的setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
等方法进行更改,并为您的应用程序提供更多空间。