1、爲什麼要適配
Android 的 系統碎片化、機型以及屏幕尺寸碎片化、屏幕分辨率碎片化嚴重,我們急需一種更優適配方式能夠讓界面視圖在每個設備上能夠正常顯示。
2、適配相關知識概念
物理像素點(px) : 代表的是手機的物理像素點
密度無關像素(dp): 密度無關像素等於160dpi 屏幕上的一個物理像素,這是系統的基線密度
屏幕密度(dpi) : 屏幕每英寸上的像素點,Android 將所有的屏幕密度分組爲6中通用密度:低(ldpi), 中(mdpi), 高(hdpi), 超高(xhdpi),xxhdpi 和 xxxhdpi.
獲取設備物理像素大小1280px X 800px
adb shell wm size
獲取設備DPI=213(這個比較奇怪命令叫density)
adb shell wm density
Android屏幕適配-基礎篇
Android屏幕適配必備知識
3、最小寬度限定符
計算最小寬度
smallestWidth = min(H,W)/(DPI/160)
按標題2中的舉例的像素(1280px X 800px)和DPI(213)舉例(這是我真是開發中遇到的平板Android設備)。
-
min(H,W):最小寬度不區分方向以寬高最小的作爲最小寬度。
-
設計圖按1280 X 800單位可以理解爲你自己的單位 比如:dpp
-
例如:1280px X 800px的真實smallestWidth = 800/(213/160) = 600dp
-
生成文件夾: values-sw600dp
-
生成比例爲: 600dp/設計圖最小寬度 1dpp = 600dp/800dpp = 0.75dp
-
所以1dpp就換算爲0.75dp
<dimen name="dpp1">0.7500dp</dimen>
...
<dimen name="dpp10">7.5000dp</dimen>
其他適配方式
- dp直接適配
- 寬高限定符
- 修改density(今日頭條方案)