Android屏幕適配

一、基本概念android

  屏幕大小(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。測試

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

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

  與密度無關的像素(Density-independent pixel,dp或dip) —— 爲了保證你的UI適合不一樣的屏幕密度,建議你採用dp來定義程序UI。orm

  

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

  

  

二、怎樣適配多種屏幕圖片

 

  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」/>
ip

  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。

三、多屏幕適配的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部分。

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

五、怎樣測試你的程序是否支持多屏幕適配,通常使用AVD Manager建立多個不一樣大小的模擬器。

相關文章
相關標籤/搜索