屏幕适配中涉及到的属性值

82 阅读1分钟

屏幕中的值

屏幕适配涉及到 3个常见的变量 density,scaleDensity,DensityDpi,同时 适配也分为资源适配,尺寸适配;

资源适配→ 根据 densityDpi 选择不同 drawable-xxxhdpi 目录

尺寸适配 → dp / sp 最终通过 densityDpi 推导出来的 density / scaledDensity 转换成 px

所以屏幕适配的核心其实是 densityDpi** ,而** density / scaledDensity 是它的计算结果

根据屏幕的尺寸以及屏幕的分辨率,获取到对应的资源尺寸的计算公式;

计算公式

根据 density/dpi 选择对应的图片

目录名对应 densityDpidensity 倍率(相对 mdpi** )**
drawable-ldpi~120 dpi0.750.75x
drawable-mdpi~160 dpi1.01x(基准)
drawable-hdpi~240 dpi1.51.5x
drawable-xhdpi~320 dpi2.02x
drawable-xxhdpi~480 dpi3.03x
drawable-xxxhdpi~640 dpi4.04x
drawable-nodpi无关密度,原始大小-不缩放

对应的设计稿的图片大小

目录尺寸(px说明
drawable-ldpi24 × 241/4
drawable-mdpi32 × 321/3
drawable-hdpi48 × 481/2
drawable-xhdpi64 × 642/3
drawable-xxhdpi96 × 961x(基准)
drawable-xxxhdpi128 × 1284/3

density,scaledDensity,densityDpi的作用:

1.density:density = dpi / 160 表示 屏幕密度因子,是 像素(px)与 dp 单位的换算比例

2.scaledDensity:scaledDensity = 字体缩放因子 * density专门用来处理 sp(scale-independent pixel)字体大小 的。作用:文字单位 sp 的换算公式;

3.densityDpi:densityDpi = density * 160 表示屏幕的 dpi(dots per inch,像素密度) 。作用: Android 会根据 densityDpi 自动选择 drawable-mdpidrawable-xhdpi 等资源目录。

简单理解:

  • density 决定了 界面大小适配
  • scaledDensity 决定了 文字随系统字体缩放
  • densityDpi 决定了 系统选用哪一套资源(mdpi, xhdpi…)