安卓屏幕适配必须了解的px ppi dpi density di

2019-10-23  本文已影响0人  望北8261

概念

换算

主要就是 dppx 的换算,因为一般来说设计给的设计稿都是以px为单位的,但是我们写界面的时候用的但是是dp。上面已经得出公式了:

fun dp2px(context: Context, dp: Int): Int {
    return (dp * context.resources.displayMetrics.density).toInt()
}

fun px2dp(context: Context, px: Int): Int {
    return (px / context.resources.displayMetrics.density).toInt()
}

DisplayMetrics

// 一加七的数据
val metrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(metrics)
LogUtils.e("hello", metrics.density)// 2.625
LogUtils.e("hello", metrics.densityDpi)// 420,也就是dpi
LogUtils.e("hello", metrics.widthPixels)// 1080
LogUtils.e("hello", metrics.heightPixels)// 2260,这里的值是除掉状态栏高度80了,屏幕实际搞定是2340。
LogUtils.e("hello", metrics.scaledDensity)// 2.625,默认就是density,除非用户手动改过
LogUtils.e("hello", metrics.xdpi)// 403.411
LogUtils.e("hello", metrics.ydpi)// 409.903
上一篇 下一篇

猜你喜欢

热点阅读