Android自適應螢幕解析度與國際化

來源:互聯網
上載者:User

標籤:螢幕方向   -o   width   布局   部落格   params   個人   mic   btn   

一.當橫屏切換成豎屏時,解決的辦法:

在res目錄下建立layout-port和layout-land兩個目錄,裡面分別放置豎屏和橫屏兩種布局檔案,當手機螢幕方向變化的時android系統會自動調用相應的布局檔案。 
當然還有辦法就是不切換。要麼都是橫屏或者要麼都是豎屏。可以在AndroidManifest.xml檔案中設定,

比如某個Activity設定為android:screenOrientation="portrait" 這樣就一直保持豎屏,

如果設定為 android:screenOrientation="landscape" 這樣就一直保持橫屏。

二.當遇到解析度不同大小時,我們也會遇到三個問題:圖片大小、布局、橫屏和豎屏的切換。

圖片問題好解決,到android2.0以後的api中,我們會發現原先的drawable檔案夾變成了3個分別是

drawable-hdpi、drawable-mdpi、drawable-ldpi。 
第一個檔案夾放高解析度手機的圖片,比如:854*480、800*480 
第二個檔案夾放中解析度手機的圖片,比如:480*320 
第三個檔案夾放低解析度手機的圖片,比如:320*240 


關於布局和橫屏切換成豎屏類似,也只需要在res目錄下建立不同的layout檔案夾,比如layout-480x320,layout-800x480,系統會根據螢幕的大小自己選擇合適的layout來使用。 

當橫屏切換成豎屏時,就會遇到一個問題,我該怎麼建立layout檔案夾? 
是我的工程裡所有的layout檔案夾: 

 

layout 是適配高解析度豎屏的布局檔案夾 
layout-land 是適配高解析度橫屏的布局檔案夾 
layout-land-320x240 是適配低解析度橫屏的布局檔案夾 
layout-land-480x320 是適配中解析度橫屏的布局檔案夾 
layout-port-320x240 是適配低解析度豎屏的布局檔案夾 
layout-port-480x320 是適配中解析度豎屏的布局檔案夾 

這樣布局檔案的適配就做完了。 
我個人覺得先按照高解析度的模擬器開發效果比較好,然後去做各個不同解析度的適配。有時候我們布局時,低解析度的布局可能需要修改下。 

最後,還有一個問題如果是在java程式中寫死的布局怎麼辦? 
這個就很惱火了,需要判斷螢幕的大小了,擷取螢幕大小的代碼如下: 
Java代碼 

1

2 WindowManager windowManager = getWindowManager();

3 Display display = windowManager.getDefaultDisplay();

4 int screenWidth = display.getWidth();

5 int screenHeight = display.getHeight();



下面的程式碼片段是我自己在程式中寫死布局使用的,僅供參考:

Java代碼:

 Button cancelBtn = new Button(this);

 if (screenWidth<320 || screenHeight<320)

 cancelBtn.setLayoutParams(new LayoutParams(60,android.view.ViewGroup.LayoutParams.WRAP_CONTENT));

 else if (screenWidth <480 &&screenHeight == 480)

 cancelBtn.setLayoutParams(new LayoutParams(80,android.view.ViewGroup.LayoutParams.WRAP_CONTENT));

 else if (screenWidth >480 && screenHeight == 480)

 cancelBtn.setLayoutParams(new LayoutParams(160,android.view.ViewGroup.LayoutParams.WRAP_CONTENT));

 else

 cancelBtn.setLayoutParams(new LayoutParams(120,android.view.ViewGroup.LayoutParams.WRAP_CONTENT));

 同樣關於國際化原理類似,這裡我就簡單說下,

建立values-en,values-en-rUs,values-zh檔案夾即可,

如何驗證國際化是否成功呢? 把手機系統的預設語言改為英語,或者美式英語,具體代碼見下次部落格內容!

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.