1. 程式人生 > >【整理】Android螢幕適配相關

【整理】Android螢幕適配相關

重要概念

  1. 螢幕尺寸
    螢幕尺寸指螢幕的對角線的長度,單位是英寸(inch),1英寸=2.54釐米
    • 例如我們經常說的手機螢幕大小有,5(英)寸、4(英)寸就是指這個單位。這些尺寸是螢幕的對角線長度。如果手機的螢幕是4英寸,表示手機的螢幕(可視區域)對角線長度是4 X 2.54 = 10.16釐米。
  2. 螢幕解析度
    螢幕解析度是指在橫縱向上的畫素點數,單位是px,1px=1個畫素點。一般以 縱向畫素*橫向畫素,如1960*1080。
  3. 螢幕畫素密度
    螢幕畫素密度是指每英寸上的畫素點數,單位是dpi,即“dot per inch”的縮寫。螢幕畫素密度與螢幕尺寸和螢幕解析度有關,在單一變化條件下,螢幕尺寸越小、解析度越高,畫素密度越大,反之越小。
  4. 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
    : scale-independent pixels,可以根據文字大小首選項進行放縮,是設定字型大小的御用單位。

劃分標準

名稱 畫素密度範圍(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圖示大小

解決方案

支援各種螢幕尺寸

  1. 使用wrap_content、match_parent、weight
  2. 使用相對佈局,禁用絕對佈局
  3. 使用限定符
    • 尺寸限定符
      res/layout/main.xml,單面板(預設)佈局
      res/layout-large/main.xml,雙面板佈局,在較大螢幕下會選則此佈局,例如 7 英寸或更大的平板電腦
      res/layout-sw600dp/main.xml,雙面板佈局,對於最小寬度大於等於 600 dp 的裝置,系統會選擇 layout-sw600dp/main.xml(雙面板)佈局,否則系統就會選擇 layout/main.xml(單面板)佈局。
    • 使用佈局別名
    • 使用螢幕方向限定符
  4. 使用自動拉伸點陣圖
    • .9.png 點陣圖的使用