Android程序對不一樣手機屏幕分辨率自適應的總結

各類Android操做系統的手機簡直就是琳琅滿目,屏幕分辨率的差別可想而知。目前比較主流的有WVGA=800x480,HVGA=480x320,另外的還有QVGA=320x240。固然還有魅族M9的DVGA=960x640,還有蛋疼的摩托羅拉的FWVGA=854x480。 佈局

  其實,在你layout的xml文件中,編寫的時候是否是用了許多的padding呢?若是是,那你就蛋疼了。由於這樣的佈局永遠是沒法適應全部手機屏幕的。 字體

  正確的作法應該是使用的是weight屬性。將你控件的layout中的width、height設置爲fill-parent,不要使用wrap——content。由於wrap-content的大小是不固定的。而weight(權重)這個屬性很好的解決了這個問題。 google

  當包裹在控件外面的Layout的width、height屬性都設置爲fill-parent時,能夠利用weight的反比特性。即若是控件A設置weight爲5,控件B設置weight爲7,那麼A所佔的空間爲5/(5+7),B所佔的空間爲7/(5+7)。這樣的反比屬性對任何分辨率下的手機都是合適的。 spa


  固然,字體就不行了。那怎麼保證字體可以跟佈局同樣可以自適應呢?
  呵呵,很簡單,就是在你的res文件夾中建立一個文件夾,叫作values-320x240。其中320x240是你手機屏幕的分辨率,根據你手機屏幕的狀況作不一樣的命名,例如values- 800x480。在該文件夾下建立一個dimens.xml文件,定義各類字體的大小。那麼系統就會自動根據你手機屏幕的分辨率去調用響應的文件夾。 操作系統


    另外,值得提醒的是,記得在你默認的values文件下的dimens.xml文件中也要寫上相應的字體大小哦,由於當系統沒法認識你手機屏幕大小的時候,它會自動去找你默認文件中的 xml

東西,沒有寫的話程序會崩潰。 ip

************************************************************分割線************************************************************ 資源

  在看下面內容以前首先請看你SDK文檔中如下這篇文章 文檔

  其實google在分辨率適應性的東西已經寫的很清楚了,只是咱們不少人沒去看而已 it

  如下是結論:
    屏幕分辨率:1024x600
    density:1(160)
    文件夾:values-mdpi-1024x600

    屏幕分辨率:1024x600
    density:1.5(240)
    文件夾:values-hdpi-683x400  由1024/1.5  600/1.5獲得,須要四捨五入。

    屏幕分辨率:800x480
    density:1(160)
    文件夾:values-mdpi-800x480

    屏幕分辨率:800x480
    density:1.5(240)
    文件夾:values-hdpi-533x320  由800/1.5  480/1.5獲得,須要四捨五入。

  以此類推
    通常狀況下須要建立出values 、values-mdpi 、 values-hdpi文件夾,以備在一些沒有規定的尺寸屏幕上找不到資源的狀況。

    而後在裏面使用不一樣的dimens文件,Layout中不要使用顯示的數字,全部的尺寸定義全都援引dimens裏面的內容。

    這樣可以保證深度UI定製的狀況

    另外在工程的default.properties中若是split.density=false,則分辨率適配的時候文件夾命名不須要與scale相除

  例
  屏幕分辨率:800x480
  density:1.5(240)
  文件夾:values-hdpi-800x480

************************************************************分割線************************************************************

  關於dimens 

    位置:res\values
    單位:px   Pixel 以畫面的像素爲單位;
         in     Inches以畫面的多少英寸爲單位;
         mm  Millimeter以畫面的多少毫米爲單位;
         pt     Points 一點爲1/72英寸;
         dp或dip  Density-indepentdent 爲160dpi屏幕的一個pixel;
         ap Scale-independent Pixels 隨屏幕尺寸改變的一個pixel;

最後總結就是要想不求人 ,英語得過關!!!

相關文章
相關標籤/搜索