1. 程式人生 > >Android中px、dp、dip、sp詳解

Android中px、dp、dip、sp詳解

眾所周知,Android廠商非常多,各種尺寸的Android手機、平板層出不窮。導致了Android生態環境的碎片化現象越來越嚴重。Google公司為了解決解析度過多的問題,在Android

的開發文件中定義了px,dp,dip,sp,方便開發者適配不同解析度的Android裝置。

1. 首先介紹基礎知識

    mm: millimeters 毫米,長度單位

    in: inches 英寸,長度單位,螢幕物理尺寸大小的基本單位

    pt: points 一個標準單位,大小為一英寸螢幕大小的1/72

    dpi: dots per inch,即畫素密度,每英寸的畫素點

    舉個例子幫助理解:

    假設QVGA (320*240)解析度的螢幕物理尺寸是2英寸*1.5英寸,則這部手機的dpi= 160,即每英寸具有160個畫素點。

    Screen size(螢幕尺寸)指的是手機實際的物理尺寸。如iPhone4S是3.5英寸,這裡的3.5英寸指的是手機螢幕對角線的長度為3.5英寸。

2. 介紹螢幕的解析度

    Resolution (解析度)之的是裝置螢幕橫向和縱向的畫素的個數。常見的手機解析度有: QVGA(240×320畫素)、HVGA(480×320畫素)、WVGA(800×480畫素)、720P(1280x720畫素)、1080P(1920x1080畫素)、2K(2560x1440畫素)

3. px, dp, dip, sp之間的區別

    px: pixel,即畫素,1px代表螢幕上的一個物理的畫素點。但px單位不被建議使用。因為同樣畫素大小的圖片在不同手機顯示的實際大小可能不同。要用到px的情況是需要畫1畫素表格線或陰影線的時候,如果用其他單位畫則會顯得模糊。

    dip (dp): device independent pixel。dp (dip)是最常用也是最難理解的尺寸單位。與畫素密度密切相關。Android系統定義了四種畫素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它們對應的dp到px的係數分別為0.75、1、1.5和2,這個係數乘以dp長度就是畫素數。例如介面上有一個長度為“80dp”的圖片,那麼它在240dpi的手機上實際顯示為80x1.5=120px,在320dpi的手機上實際顯示為80x2=160px。如果你拿這兩部手機放在一起對比,會發現這個圖片的物理尺寸“差不多”,這就是使用dp作為單位的效果。

     sp: Scale-independent Pixel,即與縮放無關的抽象畫素。sp和dp很類似但唯一的區別是,Android系統允許使用者自定義文字尺寸大小(小、正常、大、超大等等),當文字尺寸是“正常”時,1sp=1dp=0.00625英寸,而當文字尺寸是“大”或“超大”時,1sp>1dp=0.00625英寸。類似我們在windows裡調整字型尺寸以後的效果——視窗大小不變,只有文字大小改變。