2009-12-23 67 views
3

我們如何調整我們的應用程序在不同Android設備上的不同屏幕?如何讓Android應用程序兼容不同的屏幕分辨率?

+0

Deja Vu!? 有一個類似的問題在這裏問: http://stackoverflow.com/questions/1946480/accoding-to-emulator-resolution-how-to-change-the-activityscreen-controls-size 確保你做了一個搜索然後問一個問題。 – Samuh 2009-12-23 10:12:10

回答

4

如果你希望你的佈局能夠在不同的分辨率屏幕上工作,你應該使用dip作爲單位。例如:

android:layout_marginRight="10dip" 

dip代表與設備無關的像素,並使用這些在你的佈局意味着Android將自動調整你的佈局,這取決於顯示正在運行的應用程序具有設備。

你可以在Supporting Multiple Screens page in the Android Developer Documentation瞭解這些。這個文件也有處理不同顯示器的其他選項,但我認爲使用dip可能是最簡單的。

1

是的,正如Dave回答的那樣,使用「dip」是最好的選擇。另外,有些屏幕有不同的高度/寬度比,所以只使用「dip」是不夠的。 然後你有2個選項。如果你總是使用像LinearLayout,RelativeLayout等佈局與「填充父母」,你會沒事的,因爲屏幕會增長。 但是有時你在某物上設置了一個固定的高度,並且如果你將它部署在機器人上(例如),它會顯得很短,因爲機器人具有比G1/G2等更多的高度/寬度比率。在這種情況下,您需要使用代碼設置高度。

+0

當你說「你將需要使用代碼設置高度」時,你的意思是什麼?我問,因爲這是我的主要問題。我已經使用了DIP的所有功能,但底部屏幕在每個比Droid更小的屏幕上被切掉(hdpi,854x480,長)。 – joepetrakovich 2011-03-23 21:33:49

0

檢查使用下面的代碼

DisplayMetrics displaymetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 

     height = displaymetrics.heightPixels; 
     width = displaymetrics.widthPixels; 

如果屏幕的尺寸則顯示爲480x569,因爲這只是屏幕可能會在最後得到切碎的屏幕分辨率在logcat中。爲了解決這個問題,你必須改變清單文件中的minSDK版本號。