1. 程式人生 > >Android獲取螢幕實際高度跟顯示高度,判斷Android裝置是否擁有虛擬功能鍵

Android獲取螢幕實際高度跟顯示高度,判斷Android裝置是否擁有虛擬功能鍵

一般的獲取螢幕尺寸,但是不包括虛擬功能高度

/**
 * 獲取螢幕尺寸,但是不包括虛擬功能高度
 *
 * @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 ); } 複製程式碼