我的手机是HUAWEI NXT-AL10,我可以从系统设置页面看到它的分辨率是 1080 x 1920 但是当我尝试编写如下代码来检索其屏幕分辨率时,值 1080 x 1794 ,我想也许它不包括软键盘的大小。那么如何获得分辨率就像设置页面所说的那样(1080 x 1920)?
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels;
int height = metric.heightPixels;
答案 0 :(得分:2)
下面的代码可以为您提供所需的内容
Point size = new Point();
activity.getWindowManager().getDefaultDisplay().getRealSize(size);
iWidth = size.x;
iHeight = size.y;
Log.i(TAG, "Screen real size (pixels) :width = " + iWidth);
Log.i(TAG, "Screen real size (pixels) :height = " + iHeight);
请注意,这需要API 17及更高版本
答案 1 :(得分:1)
感谢@SimonH的回答,我添加了更多逻辑来支持API 16及更低版本,这里仅供您参考:
private void initScreenSize() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Point size = new Point();
getWindowManager().getDefaultDisplay().getRealSize(size);
mScreenWidth = size.x;
mScreenHeight = size.y;
} else {
Display display = getWindowManager().getDefaultDisplay();
try {
Method getHeight = Display.class.getMethod("getRawHeight");
Method getWidth = Display.class.getMethod("getRawWidth");
mScreenWidth = (Integer) getHeight.invoke(display);
mScreenHeight = (Integer) getWidth.invoke(display);
} catch (Exception e) {
mScreenWidth = display.getWidth();
mScreenHeight = display.getHeight();
}
}
}