2025-07-09 15:27:34

参考:http://www.dlxp.cn/dp-and-px.html

https://developer.android.com/guide/practices/compatibility

dp = (width in pixels * 160) / screen density

在Android中,规定以160dpi(即屏幕分辨率为320×480)为基准:1dp=1px

密度类型

代表的分辨率(px)

屏幕密度(dpi)

换算(px/dp)

比例

低密度(ldpi)

240×320

120

1dp=0.75px

3

中密度(mdpi)

320×480

160

1dp=1px

4

高密度(hdpi)

480×800

240

1dp=1.5px

6

超高密度(xhdpi)

720×1280

320

1dp=2px

8

超超高密度(xxhdpi)

1080×1920

480

1dp=3px

12

getResources().getDisplayMetrics().densityDpi 就是屏幕密度。

getResources().getDisplayMetrics().density 也可以理解为1dip相当于多少个px啦。

转换代码

object ScreenUtil {

/**

* 根据手机的分辨率从 dp 的单位 转成为 px(像素)

*/

fun dp2px(context: Context, dpValue: Float): Int {

val scale = context.resources.displayMetrics.density

return (dpValue * scale + 0.5f).toInt()

}

/**

* 根据手机的分辨率从 px(像素) 的单位 转成为 dp

*/

fun px2dp(context: Context, pxValue: Float): Int {

val scale = context.resources.displayMetrics.density

return (pxValue / scale + 0.5f).toInt()

}

}

Copyright © 2088 英式橄榄球世界杯_世界杯女篮 - tylpr.com All Rights Reserved.
友情链接