1、定义
屏幕适配定义:在不同尺寸、分辨率的手机上具有相同的显示效果。
2、相关概念
1、屏幕尺寸
- 含义:手机对角线的物理尺寸
- 单位:英寸(inch),1 英寸 = 2.54 cm
2、屏幕分辨率
- 含义:手机横向、纵向的像素点总和。
- 单位:px(pixel),1 px = 1 像素点。
- 手机常见分辨率:320 * 480,1080 * 1920。
3、屏幕像素密度
- 含义:每英寸的像素点数。
- 单位:dpi(dots per ich)。
- 安卓每类手机屏幕大小对应一个屏幕像素密度:
密度类型 | 分辨率(px) | 屏幕像素密度(dpi) |
---|---|---|
低密度(ldpi) | 240 * 320 | 120 |
中密度(mdpi) | 320 * 480 | 160 |
高密度(hdpi) | 480 * 800 | 240 |
超高密度(xhdpi) | 720 * 1280 | 320 |
超超高密度(xxhdpi) | 1080 * 1920 | 480 |
4、屏幕尺寸、分辨率、像素密度的关系
- 密度(dpi)= 宽 2 + 高 2 2 屏 幕 大 小 {\sqrt[2]{宽^2+高^2}} \over {屏幕大小} 屏幕大小2宽2+高2
- 例子:手机的分辨率:1080*1920(px),屏幕大小:5寸,密度是多少?
密度(dpi)= 1008 0 2 + 192 0 2 2 5 {\sqrt[2]{10080^2+1920^2}} \over {5} 52100802+19202 = 2203 5 {2203} \over {5} 52203 = 440 dpi (每寸440个像素)。
5、密度无关像素
- 含义:density-independent pixel 与手机像素点无关。保证在不同屏幕像素密度的设备上显示相同的效果。
- 单位:dp 或 dip。
- dp 与 px 转换:Android 中规定以 160 dpi 为基准,1dp = 1px。px = dp*(dpi/160)。
密度类型 | 分辨率(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 |
6、独立比例像素
- 含义:scale-independent pixel,可根据字体大小首选项进行缩放。
- 单位:sp 或 sip。
3、屏幕适配
- 布局适配:使用 ConstraintLayout、LinearLayout、FrameLayout、RelativeLayout。
- 组件适配:使用 wrap_layout、match_layout、weight、dp/sp 单位。
- 图片资源适配:使用多套分辨率图片、.9图片(自动拉伸图片)。
例子1:xhdpi 手机加载图片顺序:xhdpi->xxhdpi->hdpi->mdpi->drawble->ldpi。
例子2:使用一套 xhdpi 分辨率图片 (100px120px) 在不同分辨率手机上,图片压缩情况?长宽缩放比例:见密度无关像素。
xhdpi手机(100px120px)、xxhdpi手机(150px180px)、hdpi手机(75px90px)。
方案:
1、使用多套分辨率图片(apk 体积增大)、.9图片(自动拉伸图片)。
2、使用一套 xhdpi 分辨率图片(apk 体积减小,图片自动拉伸)、.9图片(自动拉伸图片)。 - 其它适配方案:最小宽度(Smallest-width)限定符适配方案、字节跳动屏幕适配方案。