【问题标题】:android displaymetrics returns 2/3 of screensizeandroid displaymetrics 返回 2/3 的屏幕尺寸
【发布时间】:2014-02-06 05:36:11
【问题描述】:
我使用 displaymetrics 来获取设备的屏幕尺寸。在智能手机中效果很好,但在平板电脑中它返回屏幕宽度和高度的 2/3。谁能告诉我这是为什么?
代码如下:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenheight = metrics.heightPixels;
int screenwidth= metrics.widthPixels;
【问题讨论】:
标签:
android
android-screen
【解决方案1】:
改用getRealMetrics():
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
这个 API 是在 API 17 中正式添加的,但在我有限的测试中,即使在 4.0 设备上它也能正常工作,所以在此之前它可能是一个隐藏的 API。
官方文档here,尽管似乎有更多的原因表明其他 API 没有按照您的预期做,而不是那里的文字所暗示的。
如果有 ICS 设备无法使用此 API,您还可以尝试提到的后备方案 here。
【解决方案2】:
您没有按密度缩放。
试试这个:
int screenHeight = metrics.heightPixels * getResources().getDisplayMetrics().density;
int screenWidth = metrics.widthPixels * getResources().getDisplayMetrics().density;
还有
(WindowManager) context.getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getWidth();