找不到正确的屏幕尺寸

时间:2019-11-01 15:37:20

标签: java android kotlin

我正在运行一个全屏活动,其中也包括陷波,我无法找到屏幕的宽度和高度。 我尝试过:

val wm = getSystemService(Context.WINDOW_SERVICE) as WindowManager
val display = wm.defaultDisplay
val metrics = DisplayMetrics()
display.getMetrics(metrics)
val width = metrics.widthPixels
val height = metrics.heightPixels

它返回正确的宽度(1080)但错误的高度(2129而不是2340)。 有什么问题?

2 个答案:

答案 0 :(得分:1)

您正在查询的应用程序区域大小可能不会占据整个屏幕大小。来自Displaydocs

  

应用程序显示区域指定了可能包含应用程序窗口的显示部分,但系统装饰除外。应用程序显示区域可能小于实际显示区域,因为系统会减去诸如状态栏之类的装饰元素所需的空间。使用以下方法查询应用程序显示区域: getSize(Point) getRectSize(Rect) getMetrics(DisplayMetrics)

在下面,有关于如何更接近物理显示指标的提示(但是请注意,在某些情况下,这将无法返回显示的物理指标):

  

实际显示区域指定包含内容(包括系统装饰)的显示部分。即使这样,如果窗口管理器正在使用(adb shell wm大小)模拟较小的显示,则实际显示区域可能小于显示的物理尺寸。使用以下方法查询实际显示区域: getRealSize(Point) getRealMetrics(DisplayMetrics)

因此您的代码应为:

val metrics = DisplayMetrics()

display.getRealMetrics(metrics)

val width = metrics.widthPixels
val height = metrics.heightPixels

答案 1 :(得分:0)

在kotlin中尝试这种Java代码方式

int width = ((Activity) mcontext).getWindowManager().getDefaultDisplay()
                    .getWidth();

 int height= ((Activity) mcontext).getWindowManager().getDefaultDisplay()
                    .getHeight();

希望对您有帮助