Android如何判斷NavigationBar是否顯示(獲取屏幕真實的高度)

 轉自:http://www.jianshu.com/p/84d951b3f079 簡書-十個雨點

有些時候,我們需要知道當前手機上是否顯示了NavigationBar,也就是屏幕底部的虛擬按鍵。

比如截屏的時候,要獲取屏幕的高度,必須包括NavigationBar的高度。

試過網上的多種方法,但是對那種可以通過手勢來顯示/隱藏的NavigationBar沒辦法,最後終於找到了一個好辦法,看代碼:

public boolean isNavigationBarShow(){    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        Point realSize = new Point();        display.getSize(size);        display.getRealSize(realSize);        return realSize.y!=size.y;
    }else {        boolean menu = ViewConfiguration.get(this).hasPermanentMenuKey();        boolean back = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);        if(menu || back) {            return false;
        }else {            return true;
        }
    }
}public static int getNavigationBarHeight(Activity activity) {    if (!isNavigationBarShow(activity)){        return 0;
    }
    Resources resources = activity.getResources();    int resourceId = resources.getIdentifier("navigation_bar_height",            "dimen", "android");    //獲取NavigationBar的高度
    int height = resources.getDimensionPixelSize(resourceId);    return height;
}public static int getSceenHeight(Activity activity) {    return activity.getWindowManager().getDefaultDisplay().getHeight()+getNavigationBarHeight(activity);
}
......我簡直煩死華爲了......


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章