Android 屏幕適配dp,sp

相關的概念:

dp

即dip,設備獨立像素,device independent pixels的縮寫,密度無關像素,Android特有的單位,在屏幕密度dpi= 160屏幕上,1dp = 1px。1dp 在屏幕上總是1/160 英寸。

它常用在設置鏢局,內邊距或任何不打算按照像素值指定尺寸的情況下。 

sp

和dp很類似,英文爲:scale-independent pixel ,縮放無關像素,與密度無關。一般用來設置字體大小,和dp的區別是它可以根據用戶的字體大小偏好來縮放。

 px

是英文單詞pixel的縮寫,意爲像素,屏幕上的點。我們通常所說的分辨率如480X800就是指的像素。

 在設計領域中,像素是用來計算數碼影像的最小單位。計算機中顯示的圖像並非連續的線條組成,而是由許多肉眼看不見的小點組成。如果把影像放大數倍,會發現這些連續色調其實是由許多色彩相近的小點所組成,這些小點就是構成影像的最小單位“像素”。由於是最小的獨立顯示單位,px均爲整數,不會出現0.5px的情況。

 dpi

dpi是Dots Per Inch的縮寫, 每英寸點數,即每英寸包含像素個數。比如320X480分辨率的手機,寬2英寸,高3英寸, 每英寸包含的像素點的數量爲320/2=160dpi(橫向)或480/3=160dpi(縱向),160就是這部手機的dpi,橫向和縱向的這個值都是相同的,原因是大部分手機屏幕使用正方形的像素點。

 

Android Drawable

我們新建一個Android項目後應該可以看到很多drawable文件夾,分別對應不同的dpi

 

drawable-ldpi (dpi=120, density=0.75)

 

drawable-mdpi (dpi=160, density=1)

 

drawable-hdpi (dpi=240, density=1.5)

 

drawable-xhdpi (dpi=320, density=2)

 

drawable-xxhdpi (dpi=480, density=3)

 

首先必須清楚一個自動渲染的概念,Android SDK會自動屏幕尺寸選擇對應的資源文件進行渲染,如SDK檢測到你手機dpi是160的話會優先到drawable-mdpi文件夾下找對應的圖片資源,注意只是優先,假設你手機dpi是160,但是你只在xhpdi文件夾下有對應的圖片資源文件,程序一樣可以正常運行。所以理論上來說只需要提供一種規格的圖片資源就ok了,如果只提供ldpi規格的圖片,對於大分辨率的手機如果把圖片放大就會不清晰,所以需要提供一套你需要支持的最大dpi的圖片,這樣即使用戶的手機分辨率很小,這樣圖片縮小依然很清晰。

 

xhdpi成爲首選

上面說了只需要提供一套大的dpi的圖片就ok了,現在市面手機分辨率最大可達到1080X1920的分辨率,如Nexus5,dpi屬於xxhdpi,但是畢竟還沒普及,目前市面上最普遍的高端機的分辨率還多集中在720X1080範圍,也就是多集中在xhdpi,所以目前來看xhpdi規則的圖片成爲了首選。當然隨着技術規格的提高以後發展,以後可能市場上xxdpi的手機會越來越普遍,但這是後話。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章