一直想謝謝關于安卓螢幕适配的問題,今天在網上收集總整理了一下,有以下幾點建議,大家共勉
1.使用wrap_content、match_parent、weight;
2.使用相對布局,盡量不使用絕對布局;
3.使用限定符,如:layout_large/xxx.xml,這樣大螢幕裝置就會自動使用該布局;
4.使用最小寬度限定符,如layout_sw700dp/xxx.xml,這樣當螢幕寬度超過700dp時就會使用該布局;
5.針對不同的分辨率,提供具體的布局,如:res/layout_800x480/xxx.xml;
6.使用布局别名,如layout下面有個布局mylayout.xml,在layout_large/xxx.xml
- <resources>
- <item name="mainlayout" type="layout">@layout/mylayout</item>
- </resources>
7.使用.9 圖檔,隻需要有一張放在drawable下面即可;
8、使用dp,sp而不是px來作為長度機關;
9、提供大小不同的位圖,如:mdpi,hdpi等目錄下面要有相對應的位圖;
10、判斷加載的布局來決定走不同的流程,如下
- setContentView(R.layout.main_layout);//此處會根據螢幕大小加載不同的布局
- Button btn1 = (Button)findViewById(R.id.btn1);//其中一個布局沒有該按鈕
- if(btn1 == null){
- ...
- }else{
- ...
- }
注意:
1、dp與Px的換算規則:以160dpi(密度)為基準,1dp=1px,若密度是320dpi,則1dp=2px,以此類推。
2、mdpi,hdpi等目錄并不需要全部都放上圖檔,這樣會使apk占用的存儲空間變大,建議對那些比較重要的圖檔提供多個分辨率,不很重要的隻提供一張即可。