為什麼要使用dp/dip?導航欄的寬度/高度應該設為多少dp合適?一般情況下應該使每個
控件的高度顯示為多少?本文就是要解決這些問題。
一,Android中的各種單位
在android開發過程中,我們無法忽略的一個問題就是設備適配問題。從我們剛開始學android的時
候,各類教程上就不厭其煩的說,“android碎片化嚴重,適配很麻煩”、“控件的長度用dip作單位,字
體用sp”等等。我們有必要去詳細了解一下這些東西,在開發過程中才能游刃有余。
下面是android中的常見單位:
px(像素)可以理解為一個小顏色塊,是設備顯示時的單位;
dip是設備獨立像素,不同設備有不同的顯示效果,和具體硬件有關;備注:dip == dp
dpi是屏幕像素密度,每英寸像素數;
sp是像素縮放。google建議用於字體顯示。
dpi等於對角線的像素值(=)除於英寸數。比如,分辨率480 x 800,屏幕尺寸4.3英寸
的DPI為:216.
為了方便,google將dpi分為多種模式LDPI, MDPI, HDPI, XHDPI, XXHDPI, and XXXHDPI,常見四個如
下,分別對應資源文件中的四個後綴:
也就是說,216會被劃分進hdpi。
這裡有一個基准:160。因為第一款Android設備(HTC的T-Mobile G1)是屬於(約等於)160dpi
的,以160為基准,乘以0.5、1、2都可以比較好的對應一個dpi模式。因此有了dip轉px的公式:
px = dp * (dpi / 160)
簡而言之,單位dp從表現上和px類似,但是它的長度是不固定的,會根據當前硬件的參數而變化,
越寬,每dp就越長(相對於固定的px而言),越窄,每dp就越短。
因此,為了有更好的顯示效果,按照google的推薦,字體使用sp為單位,其他元素使用dp為單位,需
要縮放的圖使用.9圖。
二,Android中的尺寸
Android系統現在已經百花齊放,手機、電視、平板、手表等等都可以刷進Android系統。它的開
源性質造就了它遠超其他系統的市場份額。就手機和平板而言,google官方將600dp以下為手機
(handset),600dp以上的為平板(tablet).