Android獲取螢幕實際高度跟顯示高度,判斷Android裝置是否擁有虛擬功能鍵
阿新 • • 發佈:2019-02-02
一般的獲取螢幕尺寸,但是不包括虛擬功能高度
/**
* 獲取螢幕尺寸,但是不包括虛擬功能高度
*
* @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
);
}
複製程式碼