Android 適配問題彙總

#適配問題的緣由java

##根本緣由android

因爲Android系統的開放性,任何用戶、開發者、OEM廠商、運營商均可以對Android進行定製,修改爲他們想要的樣子.
因此帶來了碎片化的問題.隨着平板,手錶,電視等等的設備加入,致使碎片化日益嚴重.git

##直接緣由github

屏幕尺寸不一樣,像素密度不一樣,分辨率不一樣,沒法根據某一原則或者屬性進行統一的適配api

#適配的基礎概念網絡

##屏幕尺寸佈局

屏幕尺寸指屏幕的對角線的長度,單位是英寸,1英寸=2.54釐米(好比常見的屏幕尺寸有2.四、2.八、3.五、3.七、4.二、5.0、5.五、6.0等)字體

##屏幕分辨率.net

屏幕分辨率是指在橫縱向上的像素點數,單位是px,1px=1個像素點。通常以縱向像素橫向像素(如19601080)設計

##屏幕像素密度

屏幕像素密度是指每英寸上的像素點數,單位是dpi,即「dot per inch」的縮寫。屏幕像素密度與屏幕尺寸和屏幕分辨率有關,在單一變化條件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。

##px、dip、dpi、sp、dp

px咱們應該是比較熟悉的,前面的分辨率就是用的像素爲單位,大多數狀況下,好比UI設計、Android原生API都會以px做爲統一的計量單位,像是獲取屏幕寬高等。

##dip,dp

dip和dp是一個意思,都是Density Independent Pixels的縮寫,即密度無關像素.
假如一英寸裏面有160個像素,這個屏幕的像素密度就是160dpi
在Android中,規定以160dpi爲基準,1dip=1px,若是密度是320dpi,則1dip=2px,以此類推。

##sp

即scale-independent pixels,與dp相似,可是能夠根據文字大小首選項進行放縮,是設置字體大小的御用單位。

##dpi(mdpi、hdpi、xdpi、xxdpi)

mdpi、hdpi、xdpi、xxdpi用來修飾Android中的drawable文件夾及values文件夾,用來區分不一樣像素密度下的圖片和dimen值。

##Google官方指定按照下列標準進行區分:

名稱	      像素密度範圍     圖標尺寸  
mdpi	      120dpi~160dpi  48x48px  
hdpi	      160dpi~240dpi  72x72px  
xhdpi	     240dpi~320dpi  96x96px  
xxhdpi	    320dpi~480dpi  144x144px  
xxxhdpi	   480dpi~640dpi  192x192px

#適配的解決方案

##多套layout(不多用了)

android3.0以前,適配指定分辨率,將layout文件夾作以下命名:

layout
  layout-1024x768
  layout-1024x600
  layout-1280x768

android3.0之後,需將高度減去48像素,即底部狀態欄的高度:

layout  
  layout-1024x720   
  layout-1024x552   
  layout-1280x720

根據不一樣屏幕尺寸加載不一樣的xml佈局 每一個佈局根據相應分辨率改寫長寬,達到適配的效果 不過感受很麻煩 本人一直都沒使用過......

##權重適配

經過android中線性佈局中的屬性(layout_weight權重) 按比例來分配. 注意:同一線性佈局下 若是有的控件沒有標註layout_weight屬性 則會優先未標註的控件 剩餘部分會按照權重比例來分配剩餘控件
我的感受這個很經常使用 配合其餘適配方法一塊兒寫比較省時省力 因爲這個很常見 就很少贅述了

##谷歌出的百分比適配

你們請看SDK中extras/android/support/percent/libs就會發現這個android-support-percent.jar
結合代碼一塊兒看就明白了
傳送門:點擊進入

##AutoLayout適配

這個是張鴻陽作的,我以爲很是厲害,本身也用了還不錯,不過在代碼里根據屏幕dp和px的比例設置寬高的時候會有問題.
傳送門:點擊進入

##java代碼適配

經過android相應api獲取當前手機的寬高像素值,按比例分配屏幕中控件的寬高以達到適配效果。

##dimens.xml文件適配

在layout的xml中 引用dimens,而後在values文件夾內建立多個適應不一樣屏幕的values.xml 在不一樣屏幕中,會根據加載不一樣的dimens文件中的引用屬性長度,達到適配效果
常見命名方式

values
  values-1024×1920
  values-hdpi
  values-hdpi-728×480
  values-sw600dp (sw表明最小寬度)

#參考資料

##移動設備統計信息

傳送門:點擊進入

##本文是對其餘網絡文章作了刪改並總結.

傳送門:參考博客

相關文章
相關標籤/搜索