Android程式對不同手機螢幕解析度自適應的總結

來源:互聯網
上載者:User

  各種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(權重)這個屬性很好的解決了這個問題。

  當包裹在控制項外面的Layout的width、height屬性都設定為fill-parent時,可以利用weight的反位元性。即如果控制項A設定weight為5,控制項B設定weight為7,那麼A所佔的空間為5/(5+7),B所佔的空間為7/(5+7)。這樣的反比屬性對任何解析度下的手機都是合適的。

  當然,字型就不行了。那怎麼保證字型能夠跟布局一樣能夠自適應呢?
  呵呵,很簡單,就是在你的res檔案夾中建立一個檔案夾,叫做values-320x240。其中320x240是你手機螢幕的解析度,根據你手機螢幕的情況做不同的命名,例如values- 800x480。在該檔案夾下建立一個dimens.xml檔案,定義各種字型的大小。那麼系統就會自動根據你手機螢幕的解析度去調用響應的檔案夾。

    另外,值得提醒的是,記得在你預設的values檔案下的dimens.xml檔案中也要寫上相應的字型大小哦,因為當系統無法認識你手機螢幕大小的時候,它會自動去找你預設檔案中的

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

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

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

  其實google在解析度適應性的東西已經寫的很清楚了,只是我們很多人沒去看而已

  以下是結論:
    螢幕解析度: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;

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.