Android 屏幕適配

Android屏幕適配主要有五種方法:圖片適配、佈局適配、尺寸適配、權重適配、代碼適配。前兩種不太常用,後三種用的較多。

圖片適配

  • 開啓4種分辨率的模擬器
  • 在drawable的多個目錄下放置內容不同但命名相同的圖片
  • 運行程序,查看在不同模擬器上的顯示效果
  • 常規做法: 美工只做一套1280*720的圖片,放置在drawable-xhdpi的目錄下, ImageView寬高指定爲確定的值, 不包裹屏幕

佈局適配

  • 針對特定分辨率,創建layout文件夾: layout-800x480, layout-land(表示橫屏)
  • 800x480 和其他分辨率模擬器對比
  • 常規做法: 該方式不到萬不得已,一般不用

尺寸適配

dp和px的關係:dp=px/設備密度
設備密度(density)的獲取:
`float density = getResources().getDisplayMetrics().density;

根據這個,我們可以寫一個dp互轉px的Util類,代碼如下:

public static int dp2px(Context context,float dp)
    {
        float density=context.getResources().getDisplayMetrics().density;
        return (int) (dp*density+0.5f);//+0.5 四捨五入
    }

    public static float px2dp(Context context,int px){
        float density=context.getResources().getDisplayMetrics().density;
        return px/density;
    }
  • 常規設備密度: 320x240(0.75), 480x320(1), 800x480(1.5), 1280x720(2)
  • 設置dp值, 在不同屏幕上查看顯示的比例
  • 創建文件夾values-1280x720, 在dimens.xml中制定尺寸, 適配屏幕
  • 常規做法: 美工提供像素px值, 我們使用前需要用px除以設備密度,轉換成dp後,寫在佈局文件中

當然,使用dp不能解決所有問題,比如800x480(豎屏)和1280x720(橫屏),這種情況就不能只設定一個dp值了,我們可以將一般的值寫在dimens.xml中,同時創建一個values-1280x720文件夾將1280x720屏幕的dp值寫在這個文件夾中的dimens.xml裏面。這樣,當遇到1280x720的設備就會去加載values-1280x720文件夾中dimens.xml的值。

權重適配

我們知道,只有在LinearLayout佈局中,纔有layout_weight屬性。這個屬性用來控制LinearLayout佈局中各個子組件按照一定比例顯示。一般說來,layout_weight值越大,所佔的比例就越大。計算公式是:某個組件寬度(或高度)佔LinearLayout的比例是:本組件weight值 / LinearLayout內所有組件weight值的和。

代碼適配

int width = getWindowManager().getDefaultDisplay().getWidth();
        int height = getWindowManager().getDefaultDisplay().getHeight();
        tv1.setLayoutParams(new LayoutParams((int)(width*0.5), (int)(height*0.2)));
    常規做法: 如果是自定義的控件, 沒有使用xml佈局文件時, 可以在代碼中動態設置寬高
發佈了26 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章