android ui状态栏高度,Android--状态栏高度,导航栏高度,Window高度,DecorView高度,heightPixels...
1:DecorView的高度
DecorView的高度代表的是: 整個(gè)裝飾窗口的高度, 這個(gè)高度包括:狀態(tài)爛的高度和導(dǎo)航欄的高度.(狀態(tài)欄和導(dǎo)航欄通常叫做裝飾窗口, 而ActionBar不屬于裝飾窗口)
這個(gè)高度, 可以代表著整個(gè)玻璃屏幕的高度.
2.Window的RootView的高度
RootView的獲取方式:getWindow().findViewById(Window.ID_ANDROID_CONTENT);
這個(gè)View對(duì)應(yīng)的高度, 可以表示當(dāng)前應(yīng)用程序的有效高度.
在沒(méi)有任何修飾的情況下, 應(yīng)用程序的高度是去掉狀態(tài)欄和導(dǎo)航欄后的高度;
也就是 (DecorView的高度)-(狀態(tài)欄的高度)-(導(dǎo)航欄的高度);
但是,如果你使用:
setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
這個(gè)方法, 那么RootView的高度會(huì)和DecorView的高度相等;
3:heightPixels的高度
heightPixels
這個(gè)高度表示…屏幕有效的高度;;;
什么意思呢?
就是:DecorView的高度去掉導(dǎo)航欄的高度.
這個(gè)高度不管你有沒(méi)有隱藏導(dǎo)航欄, 這個(gè)值都不會(huì)改變;
所以:
番外:如果你想知道你的手機(jī)有沒(méi)有導(dǎo)航欄:
如果 (DecorView的高度)-(heightPixels) > 0 說(shuō)明 你的手機(jī)有導(dǎo)航欄
番外:如果你想知道你的程序有沒(méi)有隱藏導(dǎo)航欄:
情況1:設(shè)置了SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN屬性:
如果 (RootView的高度)-(heightPixels) > 0 說(shuō)明 顯示了導(dǎo)航欄
情況2:沒(méi)有設(shè)置SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN屬性:
如果 (RootView的高度+狀態(tài)欄的高度)-(heightPixels) > 0 說(shuō)明 顯示了導(dǎo)航欄
附加1 獲取狀態(tài)欄的高度
正常情況下: (heightPixels) - (RootView的高度) = 狀態(tài)欄的高度
但是如果你設(shè)置了View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN或者View.SYSTEM_UI_FLAG_HIDE_NAVIGATION屬性的話,,,這種方法就不準(zhǔn)確了.
萬(wàn)能,100%準(zhǔn)確的方法:
getResources().getDimensionPixelSize(getResources().getIdentifier(“status_bar_height”, “dimen”, “android”));
附加2:獲取導(dǎo)航欄的高度
正常情況下: (DecorView的高度) - (heightPixels) = 導(dǎo)航欄的高度
但是如果你設(shè)置了View.SYSTEM_UI_FLAG_HIDE_NAVIGATION屬性的話,,,這種方法就不準(zhǔn)確了.
萬(wàn)能,100%準(zhǔn)確的方法:
getResources().getDimensionPixelSize(getResources().getIdentifier(“navigation_bar_height”, “dimen”, “android”));
原文:http://www.cnblogs.com/ldq2016/p/6671819.html
總結(jié)
以上是生活随笔為你收集整理的android ui状态栏高度,Android--状态栏高度,导航栏高度,Window高度,DecorView高度,heightPixels...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 折叠屏也要打价格战了:可惜不在今年618
- 下一篇: android 减速动画,Android