这个问题在这里已有答案:
我使用此代码来获取我的屏幕分辨率:
//View v
Context ctx = v.getContext();
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
但是屏幕尺寸错误:
06-03 05:25:47.861: I/Screen Size(5267): 1024x552
我的平板电脑有一个7英寸的屏幕,分辨率为1024x600 . 我猜测缺少的48个像素是系统栏使用的,但即使隐藏它,我也会得到屏幕尺寸 .
由于我在Android 4.1.1上,我不能使用API17中添加的 getRealSize()
方法 . 如何获得正确的屏幕尺寸?
Update: 我的面板密度与1.0没有差别,因此不是问题重复 . 大小应该是正确的 .
Update2: 以下代码有效(仅适用于13到16之间的API) . 它返回600x1024,因此只需检查屏幕方向以获得正确的宽度/高度
Method mGetRawW = Display.class.getMethod("getRawWidth");
Method mGetRawH = Display.class.getMethod("getRawHeight");
int nW = (Integer)mGetRawW.invoke(dp);
int nH = (Integer)mGetRawH.invoke(dp);
我从这里拿走了它:Android DisplayMetrics returns incorrect screen size in pixels on ICS
2 回答
你不能,但由于系统栏总是在屏幕的底部,你可以使用这个技巧来获得真正的尺寸:
您可以获得这样的显示指标
对于不同的人而不是densiy
这是一种方法,您可以在视图中覆盖以获取屏幕设备信息,每个设备运行一次