Android中 dp,px,dpi三者之間的關係

Android中 dp,px,dpi三者之間的關係


首先弄明白三個概念dp/dip(Density-independent pixel ) 設備獨立像素(是一個關聯Density和pixel的虛擬像素單位)dpi (dots per inch) 每英寸的像素的數量(每英寸等於2.54釐米 .通常說的屏幕尺寸是屏幕的對角線長度)px (pixels)像素  屏幕實際的像素,不同設備顯示效果相同。例如,320*480的屏幕在橫向有320個象素,在縱向有480個象素。Android系統定義了四種像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi)

在程序運行時,系統根據屏幕的實際密度透明的處理任何需要縮放的設備獨立像素單元,設備獨立像素轉換成屏幕實際像素的換算很簡單:px = dp * (dpi/ 160).  pixls=160*(320/160)對這個公式解釋:

例如:屏幕的物理尺寸爲1.5英寸x2英寸,屏幕分辨率爲240x320,則我們可以計算出在這部手機的屏幕上,每英寸包含的像素點的數量爲240/1.5=160dpi(橫向)或320/2=160dpi(縱向),Android API 說,如果屏幕密度爲160,這時dp和px是一樣的。1dp=1px; 例如 有一張定義爲“100dp”的圖片,在像素密度中(160dpi,也就是說240*320)手機上實際顯示100px,如果你換成高(240dpi)上,那麼就會顯示 240/160 *100=150px
如果你把圖片定義爲 “100px”,在像素密度中(160dpi)顯示是一樣的,如果換高(240dpi),它每英寸放的像素的數量多,只用圖片長度的一半就把一張圖片放下了,看起來就短了一半,所以通常用dp
附加API:

The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium" density screen.


總結:drawable-xhdpi 1dp=2px   drawable-hdpi  1dp=1.5px  drawable-mdpi  1dp=1px  drawable-ldpi  1dp=0.75px

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

原文鏈接:http://www.eyeandroid.com/thread-14341-1-15.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章