【整理】Android螢幕適配相關
阿新 • • 發佈:2019-01-02
重要概念
- 螢幕尺寸
螢幕尺寸指螢幕的對角線的長度,單位是英寸(inch),1英寸=2.54釐米
- 例如我們經常說的手機螢幕大小有,5(英)寸、4(英)寸就是指這個單位。這些尺寸是螢幕的對角線長度。如果手機的螢幕是4英寸,表示手機的螢幕(可視區域)對角線長度是4 X 2.54 = 10.16釐米。
- 螢幕解析度
螢幕解析度是指在橫縱向上的畫素點數,單位是px,1px=1個畫素點。一般以 縱向畫素*橫向畫素,如1960*1080。 - 螢幕畫素密度
螢幕畫素密度是指每英寸上的畫素點數,單位是dpi,即“dot per inch”的縮寫。螢幕畫素密度與螢幕尺寸和螢幕解析度有關,在單一變化條件下,螢幕尺寸越小、解析度越高,畫素密度越大,反之越小。 - px、dpi、density、dp、dip、sp
px : 大多數情況下,比如UI設計、Android原生API都會以px作為統一的計量單位,像是獲取螢幕寬高等。
–>px = dp * (dpi / 160) = dp*density
dpi : 螢幕畫素密度,
–>dpi = /螢幕對角線英寸數
–>dpi = device-common.mk檔案中定義的”ro.sf.lcd_density”屬性值,若該屬性不存在,則預設160。
density :螢幕密度,
–>density = dpi/160
dip/dp : Density Independent Pixels的縮寫,即密度無關畫素。
–>dp = px/(dpi/160) = px/density
sp
劃分標準
名稱 | 畫素密度範圍(dpi) | 螢幕密度 | 圖片icon尺寸(px) |
---|---|---|---|
drawable-ldpi | 120-160 | density=0.75 | 36*36 |
drawable-mdpi | 160-240 | density=1(baseline) | 48*48 |
drawable-hdpi | 240-320 | density=1.5 | 72*72 |
drawable-xhdpi | 320-480 | density=2 | 96*96 |
drawable-xxhdpi | 480-640 | density=3 | 144*144 |
drawable-xxxhdpi | 640-800 | density=4 | 192*192 |
小規律:比值(各種螢幕密度的比值)
ldpi:mdpi:hdpi:xhdpi:xxhdpi:xxxdpi = 0.75:1:1.5:2:3:4 = 3:4:6:8:12:16,
這個比值乘以12就得到對應螢幕密度手機桌面icon圖示大小
解決方案
支援各種螢幕尺寸
- 使用wrap_content、match_parent、weight
- 使用相對佈局,禁用絕對佈局
- 使用限定符
- 尺寸限定符
res/layout/main.xml,單面板(預設)佈局
res/layout-large/main.xml,雙面板佈局,在較大螢幕下會選則此佈局,例如 7 英寸或更大的平板電腦
res/layout-sw600dp/main.xml,雙面板佈局,對於最小寬度大於等於 600 dp 的裝置,系統會選擇 layout-sw600dp/main.xml(雙面板)佈局,否則系統就會選擇 layout/main.xml(單面板)佈局。 - 使用佈局別名
- 使用螢幕方向限定符
- 尺寸限定符
- 使用自動拉伸點陣圖
- .9.png 點陣圖的使用