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; } 
  |