轉自: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); }
......我簡直煩死華爲了......