欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程实现获得手机屏幕真实宽高的方法

程序员文章站 2023-11-26 16:47:46
本文实例讲述了android编程实现获得手机屏幕真实宽高的方法。分享给大家供大家参考,具体如下: windowmanager w = activity.getwi...

本文实例讲述了android编程实现获得手机屏幕真实宽高的方法。分享给大家供大家参考,具体如下:

windowmanager w = activity.getwindowmanager();
display d = w.getdefaultdisplay();
displaymetrics metrics = new displaymetrics();
d.getmetrics(metrics);
// since sdk_int = 1;
widthpixels = metrics.widthpixels;
heightpixels = metrics.heightpixels;
try {
  // used when 17 > sdk_int >= 14; includes window decorations (statusbar bar/menu bar)
  widthpixels = (integer) display.class.getmethod("getrawwidth").invoke(d);
  heightpixels = (integer) display.class.getmethod("getrawheight").invoke(d);
} catch (exception ignored) {
}
try {
  // used when sdk_int >= 17; includes window decorations (statusbar bar/menu bar)
  point realsize = new point();
  display.class.getmethod("getrealsize", point.class).invoke(d, realsize);
  widthpixels = realsize.x;
  heightpixels = realsize.y;
} catch (exception ignored) {
}

补:改进版 (弥补了原先非支持版本的一些异常):

windowmanager w = activity.getwindowmanager();
display d = w.getdefaultdisplay();
displaymetrics metrics = new displaymetrics();
d.getmetrics(metrics);
// since sdk_int = 1;
widthpixels = metrics.widthpixels;
heightpixels = metrics.heightpixels;
// includes window decorations (statusbar bar/menu bar)
if (build.version.sdk_int >= 14 && build.version.sdk_int < 17)
try {
  widthpixels = (integer) display.class.getmethod("getrawwidth").invoke(d);
  heightpixels = (integer) display.class.getmethod("getrawheight").invoke(d);
} catch (exception ignored) {
}
// includes window decorations (statusbar bar/menu bar)
if (build.version.sdk_int >= 17)
try {
  point realsize = new point();
  display.class.getmethod("getrealsize", point.class).invoke(d, realsize);
  widthpixels = realsize.x;
  heightpixels = realsize.y;
} catch (exception ignored) {
}

希望本文所述对大家android程序设计有所帮助。