一般的獲取屏幕尺寸,但是不包括虛擬功能高度
/** * 獲取屏幕尺寸,但是不包括虛擬功能高度 * * @return */ public int getNoHasVirtualKey() { int height = getWindowManager().getDefaultDisplay().getHeight(); return height; }
但是今天我們測試找我就說你的webview界面有問題呀下面怎么一塊空白,我看看就發現空白的手機是華為的有軟鍵盤的那種
我們這個方法獲取的高度不包含虛擬鍵盤的高度
通過反射,獲取包含虛擬鍵的整體屏幕高度
/** * 通過反射,獲取包含虛擬鍵的整體屏幕高度 * * @return */ private int getHasVirtualKey() { int dpi = 0; Display display = 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); dpi = dm.heightPixels; } catch (Exception e) { e.printStackTrace(); } return dpi; }
虛擬鍵的高度
getHasVirtualKey() - getNoHasVirtualKey()
隱藏虛擬按鍵
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { ((Activity) context).getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE);//API19 } else { ((Activity) context).getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN ); }
好了就這樣