我使用displaymetrics来获取设备的屏幕尺寸。 在智能手机中它运行良好,但在平板电脑中,它返回屏幕宽度和高度的 2/3。 谁能告诉我为什么会这样?
这就是代码:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenheight = metrics.heightPixels;
int screenwidth= metrics.widthPixels;
请尝试getRealMetrics()
:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
此 API 已正式添加到 API 17 中,但在我有限的测试中,即使在 4.0 设备上它也能正常工作,因此在此之前它可能是一个隐藏的 API。
这里的官方文档,尽管似乎有更多的原因表明其他 API 没有做你所期望的事情,而不是那里的文本所暗示的。
如果此 API 不适用于某些 ICS 设备,也可以尝试此处提到的回退。
您没有按密度缩放。
试试这个:
int screenHeight = metrics.heightPixels * getResources().getDisplayMetrics().density;
int screenWidth = metrics.widthPixels * getResources().getDisplayMetrics().density;
也
(WindowManager) context.getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getWidth();