2

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

那是代码:

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

2 回答 2

1

请尝试getRealMetrics()

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

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

官方文档here,尽管似乎有更多的原因表明其他 API 没有按照您的预期做,而不是那里的文字所暗示的。

如果有 ICS 设备无法使用此 API,您也可以尝试此处提到的后备方案。

于 2014-02-05T21:36:11.580 回答
0

您没有按密度缩放。

尝试这个:

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

(WindowManager) context.getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getWidth();
于 2012-04-30T10:24:56.147 回答