複製鏈接
請複製以下鏈接發送給好友

DIP

(設備獨立像素)

鎖定
設備獨立像素(又稱設備無關像素 Device Independent Pixels 、密度獨立性 Density Independent或設備獨立像素,簡稱DIP或DP)是一種物理測量單位,基於計算機控制的座標系統和抽象像素(虛擬像素),由底層系統的程序使用,轉換為物理像素的應用。
典型的用途是允許移動設備軟件將信息顯示和用户交互擴展到不同的屏幕尺寸。允許應用程序以抽象像素為單位進行測量,而底層圖形系統將應用程序的抽象像素測量值轉換為適合於特定設備的物理像素。
中文名
設備獨立像素 或 密度獨立性
外文名
Device Independent Pixels or Density ndependent
含    義
定義UI佈局時使用的虛擬像素單位
單    位
dp

DIP應用介紹

應用顯示在密度不同的屏幕上時,如果它保持用户界面元素的物理尺寸(從 用户的視角),便可實現“密度獨立性” 。
保持密度獨立性很重要,因為如果沒有此功能,UI元素(例如 按鈕)在低密度屏幕上看起來較大,在高密度屏幕上看起來較小。這些 密度相關的大小變化可能給應用佈局和易用性帶來問題。 [1] 

DIP系統應用

Android系統可幫助您的應用以兩種方式實現密度獨立性:
  • 系統根據當前屏幕密度擴展 dp 單位數
  • 系統在必要時可根據當前屏幕 密度將可繪製對象資源擴展到適當的大小
圖2不支持不同密度的示例應用在低、中、高密度屏幕上的顯示情況 圖2不支持不同密度的示例應用在低、中、高密度屏幕上的顯示情況
圖3支持不同密度的示例應用在低、中、高密度屏幕上的顯示情況 圖3支持不同密度的示例應用在低、中、高密度屏幕上的顯示情況
圖2中,文本視圖和位圖可繪製對象具有以像素(px單位)指定的尺寸,因此視圖的物理尺寸在低密度屏幕上更大,在高密度 屏幕上更小。這是因為,雖然實際屏幕尺寸可能相同,但高密度屏幕 的每英寸像素更多(同樣多的像素在一個更小的區域內)。圖3中,佈局 尺寸以密度獨立的像素(dp單位)指定。由於密度獨立像素的基線是中密度屏幕(中密度為160dpi,Android中六種通用的密度之一),因此具有中密度屏幕的設備看起來 與圖 2 一樣。但對於低密度和高密度屏幕,系統將分別增加和減少密度獨立像素值,以適應屏幕。
大多數情況下,確保應用中的屏幕獨立性很簡單,只需以適當的密度獨立像素(dp單位)或"wrap_content"指定所有 佈局尺寸值。系統然後根據適用於當前屏幕密度的縮放比例適當地縮放位圖可繪製對象,以 適當的大小顯示。
位圖縮放可能導致模糊或像素化位圖。為避免這些偽影,應為不同的密度提供替代的位圖資源。例如,應為高密度屏幕提供分辨率較高的位圖,然後系統對中密度屏幕將使用這些位圖,而無需調整位圖大小。 [1] 
dp與px計算公式
dx = dp * (dpi / 160)
例如,在 240 dpi 屏幕上,1 dp 等於 1.5 物理像素。
注意:因為Android系統以“中”密度屏幕假設的基線密度,故該公式中dpi除以160dpi。在定義應用的 UI 時應始終使用 dp 單位 ,以確保在不同密度的屏幕上正常顯示 UI。 [1] 
參考資料