Android中兩種獲取狀態列高度的方法

2021-07-10 00:20:52 字數 732 閱讀 5179

在做乙個關於fab的功能的時候需要獲取狀態列的高度,在網上查了很多種方法,下面是選出的比較合理的兩個方法。主要參考stackoverflow的這篇問答:

private double getstatusbarheight(context context)

這種方法很簡單,只有一行**,查過參考手冊後可以翻譯一下:

狀態列高度=取大於其的最小整數(25*上下文_獲取應用包的資源例項_獲取當前螢幕尺寸_螢幕密度比例)

其中density並不是真實的螢幕密度,而是乙個相對密度,基準密度為160dpi,比如我測試的手機為htc one m8,查的螢幕密度為441dpi,相對160為2.75,density就取為3。各解析度的density取值為:

所以得到的狀態列高度為25*3=75

由這種方法得到的狀態列高度具有較大侷限性,比如因為某種需要去掉狀態列或本身沒有狀態列,此時狀態列高度應為0,但是該方法依然能夠得到乙個非零的狀態列高度。

private int getstatusbarheight(context context) 

return result;

}

另外乙個用到的辦法是getdimensionpixelsize(),由函式名就能知道是根據資源id獲得資源畫素尺寸,這裡就直接獲得狀態列的高度。

這種方法在狀態列不存在的時候就會獲得其高度為0.

android 狀態列顏色的兩種設定模式

if build.version.sdk int build.version codes.lollipop 設定成功後的效果是這樣的 強迫症患者心裡頓時舒服了許多。抱著這種心態我去試著搬到自己的工程裡面發現 竟然不可以!為啥不可以?因為我發現在我的activity中沒有這個設定statusbar的函...

Android沉浸式狀態列的兩種實現方式

首先,需要注意的是,只有大於等於4.4版本才支援沉浸式狀態列的效果,沉浸式狀態列可以使用開源庫systembartint,不過好像作者很久沒有進行更新了,所以不推薦使用了。第一種方式,參考了鴻洋大神,原鏈結在這 最關鍵的是在 中設定透明化 if build.version.sdk int build...

完美獲取Android狀態列高度

來自 閒暇寫了個單本 閱讀的應用。中間碰到了需要獲取狀態列高度的問題。就像android後期版本,無法直接退出一樣。找了一些方法來獲取狀態列高度,結果都是為0.class c null object obj null field field null intx 0,sbar 0 trycatch e...