標籤:android style blog http io 使用 ar for strong
概念解釋
名詞 |
解釋 |
Px (Pixel像素) |
不同裝置顯示效果相同。這裡的“相同”是指像素數不會變,比如指定UI長度是100px,那不管解析度是多少UI長度都是100px。也正是因為如此才造成了UI在小解析度裝置上被放大而失真,在大解析度上被縮小。 |
Screen Size (螢幕尺寸) |
一般所說的手機螢幕大小如1.6英寸、1.9英寸、2.2英寸,都是指的對角線的長度,而不是手機面積。我們可以根據勾股定理擷取手機的寬和長,當然還有面積。 |
Resolution (解析度) |
指手機螢幕垂直和水平方向上的像素個數。比如解析度是480*320,則指裝置垂直方向有480個像素點,水平方向有320個像素點。 |
Dpi (dots per inch 像素密度) |
指每英寸中的像素數。如160dpi指手機水平或垂直方向上每英寸距離有160個像素點。假定裝置解析度為320*240,螢幕長2英寸寬1.5英寸,dpi=320/2=240/1.5=160 注意:該值對應於DisplayMetrics類中屬性densityDpi的值。具體請參考http://www.cnblogs.com/wader2011/archive/2011/11/28/2266669.html |
Density (密度) |
指每平方英寸中的像素數。 Density=Resolution/Screen size Density * Density = (Resolution Width * Resolution Height)/(Screen Width * Screen Height) 注意:在DisplayMetrics類中屬性density的值為dpi/160,可用於px與dip的互相轉換。具體請參考http://www.cnblogs.com/wader2011/archive/2011/11/28/2266684.html |
Dip (Device-independent pixel,裝置獨立像素) |
同dp,可作長度單位,不同裝置有不同的顯示效果,這個和裝置硬體有關,一般我們為了支援WVGA、HVGA和QVGA 推薦使用這個,不依賴像素。dip和具體像素值的對應公式是dip值 =pixel值/density. |
Sp (ScaledPixels 放大像素) |
主要用於字型顯示(best for textsize)。根據 google 的建議,TextView 的字型大小最好使用 sp 做單位,而且查看TextView的源碼可知 Android 預設使用 sp 作為字型大小單位。 |
總結
我們可以用下面的思路來解釋為什麼用dip代替px作單位:
- 裝置最終會以px作為長度單位。
- 如果我們直接用px作為單位會造成UI在不同解析度裝置上出現不合適的縮放。因此我們需要一種新的單位,這種單位要最終能夠以合適的係數換算成px使UI表現出合適的大小。
- Dip符合這種要求嗎?
由dip和具體像素值的對應公式dip值 =pixel值/density 可以知
pixel值=dip值*denstiy,其中dip值是我們指定的長度大小,那麼pixel值,就是說UI最終的pixel值只受密度densitiy的影響,這個denstiy就相當於那個換算係數,這個係數的值是多少有裝置商去決定。因此dip符合這種要求。
關於sp也可以這樣理解.
轉:http://www.cnblogs.com/wader2011/archive/2011/11/29/2267490.html 調整裡面公式錯誤。
Android中px dpi dip density densityDpi 的相關說明