2014-03-13 214 views
0

是的,我知道我可以使用DisplayMetrics,但問題是在某些設備上widthPixels成員是錯誤的值(至少我有這樣的一個電話)。在setting頁的分辨率爲720×1280,但widthPixelsDisplayMetrics 600和heightPixels是1067我如何獲得設備的「真實」分辨率?

此外,我已經試過getRealSize和返回的值是正確的。但最終我發現我的手機的「真實」寬度是640(我猜這個高度也是不同的數字)。

太棒了!這裏究竟發生了什麼?

編輯:

我這裏還有一些數據 widthPixelsDisplayMetrics是600 density爲1.6,heightPixels是1067

,我已經嘗試了所有的方法,但都沒有工作。如果我能夠輕鬆找到正確的答案,我不需要在這裏發佈我的問題。該設備是HN3-U01,中國製造

+0

爲什麼這個面積減去'width'? 600是縱向的設備寬度 – suitianshi

+0

檢查Bhanu的答案。這是正確的。 – Sushil

回答

0

您可以使用此代碼..

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 
+0

我已經嘗試了很多方法,包括這個。但它不起作用 – suitianshi

0
// Get device resolution 



int width = 0; 
int height = 0; 
Point size = new Point(); 
WindowManager w = getWindowManager(); 

if (Build.VERSION.SDK_INT >= 13) 
{ 
    w.getDefaultDisplay().getSize(size); 
    width = size.x; 
    height = size.y; 
} 
else 
{ 
    Display display = getWindowManager().getDefaultDisplay(); 
    width = display.getWidth(); 
    height = display.getHeight(); 
} 

因爲的getWidth()和getHeight()方法後API level 13

+0

我已經嘗試了很多方法,包括這個。但它不起作用 – suitianshi

0

這種嘗試棄用

private DisplayMetrics metrics; 
    private int widthPixels; 
private float scaleFactor; 
private float widthDp; 
    metrics = new DisplayMetrics(); 

    getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); 

    int density= getResources().getDisplayMetrics().densityDpi; 

    widthPixels = metrics.widthPixels; 

    scaleFactor = metrics.density; 

    widthDp = widthPixels/scaleFactor; 
+0

我已經嘗試了很多方法,包括這個。但它不起作用 – suitianshi

+0

其工作在我身邊 –

+0

是的,以上所有答案都是正確的,但不是在我的設備上,請參閱我的編輯。 – suitianshi