公司要在特定设备上进行开发,拿到设备后提取一下屏幕尺寸参数给UI作图,查找了一些资料发现这方面资料有点凌乱,所以整理一下。
![BOAEUOM8UB2)X)M0)P$8UE.png
//获取宽
val width=resources.displayMetrics.widthPixels
//获取高=屏幕显示区的高
val height=resources.displayMetrics.heightPixels
//获取屏幕密度
val densityDpi=resources.displayMetrics.densityDpi
//获取屏幕物理宽高 Android4.2 17以上
val point = Point()
display?.getRealSize(point)
//获取屏幕的宽度
val height = point.x
//屏幕整体高度=屏幕显示区+导航栏
val height = point.y
复制代码
有博客上指出
resources.displayMetrics.heightPixels
在全面屏上该方法无法获取正确的宽高,用下列方式作为替换
val wm = getSystemService(WINDOW_SERVICE) as WindowManager
val dm = DisplayMetrics()
wm.defaultDisplay.getMetrics(dm)
val height = dm.heightPixels
复制代码
但是我测试了多款全面屏手机得到的结果两个一致
获取状态栏高度
方式一
val resources: Resources = context.resources
val resourceId: Int = resources.getIdentifier("status_bar_height", "dimen", "android")
vak barHeight = resources.getDimensionPixelSize(resourceId)
复制代码
方式二 此方法不要再初始化时使用,建议onWindowFocusChanged
方法中调用
val rectangle = Rect()
window.decorView.getWindowVisibleDisplayFrame(rectangle)
val barHeight = rectangle.top
复制代码
获取导航栏高度
val resourceId: Int = resources.getIdentifier("navigation_bar_height", "dimen", "android")
val navigationBarHeight = resources.getDimensionPixelSize(resourceId)
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END