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