1、设备不存在虚拟键:
第二种获取方法:
2、设备存在虚拟键:
利用上面的方法只能获取到不包括虚拟键的屏幕尺寸的大小,如果要获取真实的屏幕大小,则要通过反射的方式进行获取:
第一种获取方法:
public static void getScreenWidthAndHeight(Context context) {
Display display = ((WindowManager) context
.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
System.out.println("width = " + display.getWidth() + ",height = "
+ display.getHeight());
}
第二种获取方法:
public static void getScreenWidthAndHeight(Context context) {
DisplayMetrics dm = new DisplayMetrics();
((WindowManager) context.getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay().getMetrics(dm);
System.out.println("width = " + dm.widthPixels + ",height = "
+ dm.heightPixels);
}<strong>
</strong>
2、设备存在虚拟键:
利用上面的方法只能获取到不包括虚拟键的屏幕尺寸的大小,如果要获取真实的屏幕大小,则要通过反射的方式进行获取:
<span style="font-size:14px;">public static void getScreenWidthAndHeight() {
Display display = ((Activity) mContext).getWindowManager()
.getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
@SuppressWarnings("rawtypes")
Class c;
try {
c = Class.forName("android.view.Display");
@SuppressWarnings("unchecked")
Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);
method.invoke(display, dm);
System.out.println("width = " + dm.widthPixels + ",height = "
+ dm.heightPixels);
} catch (Exception e) {
e.printStackTrace();
}
}</span>