2014-03-13 184 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