Android-->狀態列高度,導覽列高度,Window高度,DecorView高度,heightPixels

來源:互聯網
上載者:User

標籤:狀態列   markdown   友好   status   疑問   source   計算   pixel   應用   

喔…這標題,嚇我一跳;

請稍等….

思緒整理中…

Android中, 經常被這些高度絆腳. 完全進入懵逼的狀態, 有木有?

請允許我,介紹清楚!

通常情況下, 寬度都是很友好的,但是高度就呵呵, 所以本文只介紹高度的計算.

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

至此: 文章就結束了,如有疑問: QQ群 Android:274306954 Swift:399799363 歡迎您的加入.

Android-->狀態列高度,導覽列高度,Window高度,DecorView高度,heightPixels

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.