天天看點

Android判斷NavigationBar是否顯示的方法(擷取螢幕真實的高度)

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

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

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

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

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

;

}

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);

}

具體代碼可以參考Bigbang項目的ViewUtil中的處理。

以上所述是小編給大家介紹的Android判斷NavigationBar是否顯示的方法(擷取螢幕真實的高度),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對腳本之家網站的支援!