Android 螢幕適配

來源:互聯網
上載者:User

標籤:

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 四捨五入
}

publicstatic 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布局檔案時, 可以在代碼中動態設定寬高

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.