android – 多屏幕適配相關

1、基本概念

屏幕大小(screen size) – 屏幕的實際大小,用屏幕對角線長度來衡量(比如3.4寸,3.8寸)。android把屏幕分爲以下4種:small,normal,large,extra large。
怎麼判斷?

屏幕密度(Screen Density) -  一塊實際的屏幕區域有多少個像素,一般用dpi衡量(每英寸有多少個點)。相比起medium、high屏幕密度的設備,在一塊確定大小的屏幕區域l密度爲low的屏幕擁有的像素更少。android把屏幕密度分爲4種:low,medium,high,extra high。

如何判斷是ldpi,mdpi,hdpi?

方向(orientation) -  屏幕方向分爲landscape(橫屏)和portrait(豎屏)。

分辨率(Resolution) -  屏幕上的總實際像素數。對屏幕進行適配時,一般不關注它的分辨率,只關注它的屏幕大小和密度。

與密度無關的像素(Density-independent pixel,dp或dip) -  爲了保證你的UI適合不同的屏幕密度,建議你採用dp來定義程序UI。
它的計算方法爲:px = dp * (dpi / 160)

sp(scale-independent pixel)

如何分辨一個屏幕是ldpi、mdpi、hdpi的方法,見下圖

計算屏幕密度

2、怎樣適配多種屏幕

a.在manifest裏定義你的程序支持的屏幕類型,相應代碼如下:
<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"]   //是否支持小屏
android:normalScreens=["true" | "false"]  //是否支持中屏
android:largeScreens=["true" | "false"]   //是否支持大屏
android:xlargeScreens=["true" | "false"]  //是否支持超大屏
android:anyDensity=["true" | "false"]    //是否支持多種不同密度的屏幕
android:requiresSmallestWidthDp=”integer”
android:compatibleWidthLimitDp=”integer”
android:largestWidthLimitDp=”integer”/>

b.對不同大小的屏幕提供不同的layout。

      比如,如果需要對大小爲large的屏幕提供支持,需要在res目錄下新建一個文件夾layout-large/並提供layout。當然,也可以在res目錄下建立layout-port和layout-land兩個目錄,裏面分別放置豎屏和橫屏兩種佈局文件,以適應對橫屏豎屏自動切換。

c.對不同密度的屏幕提供不同的圖片。
應儘量使用點9格式的圖片,如需對密度爲low的屏幕提供合適的圖片,需新建文件夾drawable-ldpi/,並放入合適大小的圖片。相應的,medium對應drawable-mdpi /,high對應drawable-hdpi/,extra high對應drawable-xhdpi/。
圖片大小的確定:low:medium:high:extra high比例爲3:4:6:8。舉例來說,對於中等密度(medium)的屏幕你的圖片像素大小爲48×48,那麼低密度(low)屏幕的圖片大小應爲36×36,高(high)的爲72×72,extra high爲96×96。

不同密度的屏幕對應的圖片比例

3、多屏幕適配的4條黃金原則
a.在layout文件中設置控件尺寸時應採用wrap_content,fill_parent和dp

       具體來說,設置view的屬性android:layout_width和android:layout_height的值時,wrap_content,fill_parent或dp比pix更好。相應地,爲了使文字大小更好的適應屏幕應該使用sp來定義文字大小。

b.在程序的代碼中不要出現具體的像素值。

爲了使代碼簡單,android內部使用pix爲單位表示控件的尺寸,但這是基於當前屏幕基礎上的。爲了適應多種屏幕,android建議開發者不要使用具體的像素來表示控件尺寸。

c.不要使用AbsoluteLayout(android1.5已廢棄) 。相應地,應使用RelativeLayout。

d.對不同的屏幕提供合適大小的圖片。見上面第2部分。

4、需要注意的地方
以上設置適用於android3.2以下的版本。(本人目前開發是在android2.2上,這部分以後再補充)

5、怎樣測試你的程序是否支持多屏幕適配
一般使用AVD Manager創建多個不同大小的模擬器,如下圖


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