我正在运行一个全屏活动,其中也包括陷波,我无法找到屏幕的宽度和高度。 我尝试过:
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)。 有什么问题?
答案 0 :(得分:1)
您正在查询的应用程序区域大小可能不会占据整个屏幕大小。来自Display
类docs:
应用程序显示区域指定了可能包含应用程序窗口的显示部分,但系统装饰除外。应用程序显示区域可能小于实际显示区域,因为系统会减去诸如状态栏之类的装饰元素所需的空间。使用以下方法查询应用程序显示区域: 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();
希望对您有帮助