Android開發螢幕適配方案

來源:互聯網
上載者:User

標籤:

Android螢幕適配方案總結
 日常開發中,難免遇到螢幕適配的方案,網上也有很多方案,在這裡本人只是做一個總結,以免日後使用
單位的概念
  • pt(point):磅,一個標準的固定長度單位,大小為1/72英寸,主要用於印刷與平面設計。1英寸=2.54厘米=72磅 1pt=0.03527cm

  • px(pixel):像素,組成螢幕映像的最小點,一個相對大小單位。同尺寸螢幕中像素越小越多,代表螢幕解析度越高,反之越高。

    1pt=(ppi/72)*px

  • 螢幕尺寸(screen size):螢幕物理尺寸,指螢幕對角線的長度,而不是螢幕的長度或高度。單位為英寸,4英寸、5寸手機……
    Android把所有的螢幕大小分為四種尺寸:小、普通、大、超大(分別對應small、normal、large、extra large)

  • 解析度(Resolution):螢幕擁有像素的總數以及螢幕水平(寬)和垂直(高)方向的像素數量。
    ?

  • ppi(pixels per inch):螢幕密度,指的是每英寸所擁有的像素數/每英吋像素。ppi數值越高,既代表顯示屏能夠以越高的密度顯示映像。顯示的密度越高,擬真度就越高。

  • dpi(dots per inch):印刷計數單位,指每英寸所能印刷出來的網點數。衡量印表機列印精度的主要參數之一,值越大,表明印表機列印精度越高。電子屏上ppi=dpi

  • dp(Density-independent Pixels):與螢幕無關的像素單位。Android開發虛擬單位,在每英寸160點的顯示器上,1dp=1px;

  • sp(Scale-independentPixels):Android字型大小虛擬單位。在每英寸160點的顯示器上,當文字大小為100%的時候,1sp=1px。如果字型設定為sp,字型可以根據系統大小調節而變化。

適配方案
  • 檔案夾目錄不同資源適配
    1、建立對應螢幕解析度的檔案夾,例如螢幕解析度為540*960則可以建立對應資源檔夾values-960x540,這樣就會根據解析度進行讀取對應的檔案資訊。

    2、考慮橫屏和豎屏布局效果:Android有Layout-port和layout-land兩個目錄分別放置豎屏和橫屏的兩種布局檔案,在手機螢幕發生轉變,會自動調用相應布局檔案。

    3、適配大螢幕,有些時候需要考慮類似平板的的螢幕進行適配,可以吧xml布局檔案放到layout-large檔案夾下,此檔案夾的命名要和layout下布局一樣,在螢幕要超過7寸的螢幕會自動讀取large下的檔案。(注意:在android3.2之前的版本試用)

    4、在android3.2之後的版本可以使用layout-sw600dp檔案夾,sw是small width的簡稱,見名知意就是最小寬度的意思。這個檔案夾的使用規則和layout-large一樣,的那是這裡代表寬和高的最小邊為600dp的布局,也就是600dp以上的螢幕。

    5、布局別名:有時候在sw600dp檔案和large檔案夾或者多個檔案夾下都需要進行維護布局檔案,這時候我們同樣寫兩份代碼有點多餘,此時需要對布局進行設定別名來維護共同的一套。在layout下可以只有2個檔案一個是小螢幕預設的如:main.xml,另一個是大螢幕如:main_large.xml。之後再values下配置別名,
    預設的:values/layout.xml
    最少寬度600dp:values/layout-sw600dp/layout.xml 代碼如下
    3.2之前大於7寸的:values/layout-large/layout.xml 代碼如下

<?xml version="1.0" encoding="utf-8"?><resources>    <item name="main" type="layout">@layout/main_large</item></resources>
  • 編寫xml時的適配
    1、盡量使用wrap_content、match_parent、和weight。這樣布局就會自動擴充。比如weight權重,用的時候可以按照比例進行分配,就不會出現顯示不全等現象。

    2、使用相對布局,由於RelativeLayout是根據位置進行控制,所以我們可以選擇對應的參照物,例如一個按鈕設定在父布局的右邊,這樣的話這樣的話,無論父布局無論是多寬或者多高,這個按鈕都在父布局的右邊。

  • 圖片與資源的適配
    1、我們可以適配不同的values,可以設定多份螢幕都 dimens檔案,因為在720的螢幕上1dp等於2px到1080螢幕上就等於3px,所以我們可以根據不同的dimens設定不同的px或者dp的值在dimens檔案中。

    2、切不同尺寸的圖進行適配。可以感覺umeng進行查看目前市場上最主流,用的最多的手機螢幕的資訊,切對應的套圖也是最常用的適配方式。但是圖片也不建議過多,因為這樣會對apk包的大小有影響。我們可以把這些圖片進行壓縮,順便介紹一個壓縮的工具網站,親測效果還是不錯的。

    順便推薦一個壓縮圖片的工具網站,效果不錯哦!

    3、9patch圖片的使用,我們稱之為點9,這個工具就在sdk下面,網上教程一大堆我就不敘述了。

  • 代碼中進行適配

    1、我們在自訂控制項中,可以根據代碼擷取到當前的螢幕密度,然後對空間的大小進行設定,這樣的話設定的代碼就是動態計算寬度和高度的。如我們用畫筆花的字型,會在不同解析度上呈現不同的大小,這時候可以通過擷取解析度然後計算出我們要設定的寬度和高度。2、其實在寫代碼時候經常會遇到在代碼中計算的情況,例如我彈出一個單選框,需要動態設定高度,如果寫死一個高度的話會對不同的選項有問題。


這樣的話可以通過設定LayoutParams進行動態設定一個空間的寬、高等其他的屬性進行動態適配。

  • 其他適配以後想到的會繼續不斷的補充。

Android開發螢幕適配方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.