Andriod UI設計之度量單位說明(DIP,DP,PX,SP)

來源: 盒子UI  發布時間: 2011-02-23 17:25  閱讀: 10441 次  推薦: 2   原文鏈接   [收藏]  
摘要:分享一些關于在Android UI設計中會用到的dip、dp、px、sp等單位說明。

  (一)概念

  dip: device independent pixels(設備獨立像素). 不同設備有不同的顯示效果,這個和設備硬件有關,一般我們為了支持WVGA、HVGA和QVGA 推薦使用這個,不依賴像素。

  px: pixels(像素). 不同設備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。

  pt: point,是一個標準的長度單位,1pt=1/72英寸,用于印刷業,非常簡單易用;

  sp: scaled pixels(放大像素). 主要用于字體顯示best for textsize。

  (二)換算(以 sp 和 pt 為例)  通過查看TextView 等類的源碼

 
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
--------------------------
scaledDensity
= DENSITY_DEVICE / (float) DENSITY_DEFAULT;
xdpi
= DENSITY_DEVICE;
--------------------------
DENSITY_DEFAULT
= DENSITY_MEDIUM = 160;

  所以: 假設 pt 和 sp 取相同的值 1,則可設 1pt 和 1sp 之間系數為 x,

  1 * DENSITY_DEVICE / 72 = x * 1 * DENSITY_DEVICE / 160 =>

  x = 160 / 72 = 2.2222

  也就是說在 Android 中, 1pt 大概等于 2.22sp

  (三)關系與區別

  過去,程序員通常以像素為單位設計計算機用戶界面。例如,定義一個寬度為300像素的表單字段,列之間的間距為5個像素,圖標大小為16×16像素 等。這樣處理的問題在于,如果在一個每英寸點數(dpi)更高的新顯示器上運行該程序,則用戶界面會顯得很小。在有些情況下,用戶界面可能會小到難以看清 內容。

  與分辨率無關的度量單位可以解決這一問題。Android支持下列所有單位。

  px(像素):屏幕上的點。

  in(英寸):長度單位。

  mm(毫米):長度單位。

  pt(磅):1/72英寸。

  dp(與密度無關的像素):一種基于屏幕密度的抽象單位。在每英寸160點的顯示器上,1dp = 1px。

  dip:與dp相同,多用于android/ophone示例中。

  sp(與刻度無關的像素):與dp類似,但是可以根據用戶的字體大小首選項進行縮放。

  (四)建議

  為了使用戶界面能夠在現在和將來的顯示器類型上正常顯示,建議大家始終使用sp作為文字大小的單位,將dip或者dp作為其他元素的單位。當然,也可以考慮使用矢量圖形,而不是用位圖。

2
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()