android带有虚拟键的手机, 获取屏幕宽度默认不包含虚拟键的高度,以下代码是获取屏幕原始高度。
获取屏幕原始高度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public static int getDpi(Context context){ int dpi = 0; WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); DisplayMetrics displayMetrics = 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, displayMetrics); dpi=displayMetrics.heightPixels; }catch(Exception e){ e.printStackTrace(); } return dpi; }
|
华为等带有虚拟键的手机,如下代码获取的屏幕高度不包含虚拟键盘的高度
1 2 3 4 5
| public static int getScreenHeight(Activity activity) { DisplayMetrics metric = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(metric); return metric.heightPixels; }
|