android displaymetrics返回屏幕大小的2/3

时间:2012-04-30 09:42:56

标签: android android-screen

我使用displaymetrics来获取设备的屏幕尺寸。在智能手机中它工作得很好但在平板电脑中它返回屏幕宽度和高度的2/3。谁能告诉我为什么会这样?

这就是代码:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenheight = metrics.heightPixels;
int screenwidth= metrics.widthPixels;

2 个答案:

答案 0 :(得分:1)

请尝试getRealMetrics()

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);

此API已在API 17中正式添加,但在我的有限测试中,即使在4.0设备上也能正常使用,因此在此之前它可能是一个隐藏的API。

官方文档here,但似乎有更多理由认为其他API没有达到您所期望的效果,而不是暗示的文本。

如果有这个API不起作用的ICS设备,您还可以尝试提到here的后备。

答案 1 :(得分:0)

您没有按密度进行缩放。

试试这个:

int screenHeight = metrics.heightPixels * getResources().getDisplayMetrics().density;
int screenWidth = metrics.widthPixels * getResources().getDisplayMetrics().density;

另外

(WindowManager) context.getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getWidth();