我已經試過2種的方法來找到設備的尺寸(寬度和高度):查找設備分辨率
getWindowManager().getDefaultDisplay();
((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
但是這兩種方法都是不可靠的,因爲有時他們給我錯誤的尺寸。對於具有480x800分辨率的HTC願望,它會給我尺寸爲320x533,這是不正確的。有人可以建議一個更可靠的方法嗎?
我已經試過2種的方法來找到設備的尺寸(寬度和高度):查找設備分辨率
getWindowManager().getDefaultDisplay();
((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
但是這兩種方法都是不可靠的,因爲有時他們給我錯誤的尺寸。對於具有480x800分辨率的HTC願望,它會給我尺寸爲320x533,這是不正確的。有人可以建議一個更可靠的方法嗎?
以下解決方案爲我工作:
public void setDeviceDimensions() {
WindowManager w = getWindowManager();
Display d = w.getDefaultDisplay();
width = d.getWidth();
height = d.getHeight();
}
隨着清單如下條目:
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="9" />
這應該工作
Display display = activity.getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int Height = display.getHeight();
這也將工作:
public static String getDisplayPixelSize(Activity activity) {
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
return metrics.widthPixels + " x " + metrics.heightPixels;
}
您應該對以下條款明確的概念,
屏幕尺寸: 實際物理尺寸,在屏幕的對角線測量。 爲簡單起見,Android會將所有實際屏幕尺寸分爲四種廣義尺寸:小尺寸,普通尺寸,大尺寸和超大尺寸。
屏幕密度: 屏幕物理區域內的像素數量;通常稱爲dpi(每英寸點數)。例如,與「正常」或「高」密度屏幕相比,「低」密度屏幕在給定物理區域內具有更少的像素。 爲了簡單起見,Android將所有實際屏幕密度分爲四種廣義密度:低,中,高和超高。
定位: 從用戶的角度來看屏幕的方向。這是橫向或縱向,這意味着屏幕的寬高比分別爲寬或高。請注意,不同的設備默認情況下在不同的方向上運行,但是當用戶旋轉設備時,方向會在運行時更改。
分辨率: 屏幕上的物理像素總數。當添加對多個屏幕的支持時,應用程序不會直接使用解決方案;應用程序應僅關注屏幕大小和密度,如廣義大小和密度組所指定。
密度獨立像素(DP): 定義UI佈局時應該使用,以表達佈局尺寸或位置的密度無關的方式的虛擬像素。 與密度無關的像素相當於160 dpi屏幕上的一個物理像素,這是系統爲「中等」密度屏幕假設的基準密度。在運行時,系統根據使用的屏幕的實際密度,根據需要透明地處理dp單位的任何縮放比例。將dp單位轉換爲屏幕像素很簡單:px = dp *(dpi/160)。例如,在240 dpi屏幕上,1 dp等於1.5個物理像素。定義應用程序的用戶界面時,應始終使用dp單位,以確保在不同密度的屏幕上正確顯示您的用戶界面。
參考:android開發人員網站