Android狀態(tài)欄處理

android:fitsSystemWindows

設(shè)置android:fitsSystemWindows生效的前提是控件對于屬性有相應(yīng)的處理烤镐,如果沒有處理則不會生效鼎天。
CoordinatorLayout:處理了沉浸式狀態(tài)欄并且預(yù)留了狀態(tài)欄高度
CollapsingToolbarLayout:結(jié)合CoordinatorLayout可以實現(xiàn)內(nèi)部控件填充到狀態(tài)欄
未處理android:fitsSystemWindows屬性的控件需要自行處理

處理可交換控件被狀態(tài)欄遮擋(預(yù)留空間)
val button = findViewById<Button>(R.id.button)
ViewCompat.setOnApplyWindowInsetsListener(button) { view, insets ->
      val params = view.layoutParams as FrameLayout.LayoutParams
      params.topMargin = insets.systemWindowInsetTop
      insets
}

淺色狀態(tài)欄(字體黑色):

val flags = window.decorView.systemUiVisibility
window.decorView.systemUiVisibility = flags or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

恢復(fù)深色狀態(tài)欄(字體白色):

發(fā)了flags = window.decorView.systemUiVisibility or  View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window.decorView.systemUiVisibility  = flags xor View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

利用Palette庫動態(tài)獲取圖像顏色設(shè)置狀態(tài)欄字體顏色:

implementation 'androidx.palette:palette:1.0.0'
Palette
    .from(bitmap)//接收圖片bitmap
    .setRegion(left, top, right, bottom)//指定提取色值區(qū)域
    .maximumColorCount(colorCount)//設(shè)置要提取的色值特征點數(shù)
    .generate {//獲取異步解析結(jié)果
it?.let { palette ->
            var mostPopularSwatch: Palette.Swatch? = null
            for (swatch in palette.swatches) {//循環(huán)判斷獲取權(quán)重最高色值
                if (mostPopularSwatch == null
                    || swatch.population > mostPopularSwatch.population) {
                    mostPopularSwatch = swatch
                }
            }
            mostPopularSwatch?.let { swatch ->
                val luminance = ColorUtils.calculateLuminance(swatch.rgb)
                // 當luminance小于0.5時悄雅,認為這是一個深色值.
                if (luminance < 0.5) {
                    setDarkStatusBar()
                } else {
                    setLightStatusBar()
                }
}
Android11之后設(shè)置:

使用WindowInsetsController需要core版本提高到1.5.0以上
API詳細說明(需要vpn查看)
https://developer.android.com/reference/android/view/WindowInsetsController?hl=en

控制狀態(tài)欄:
implementation 'androidx.core:core:1.5.0-alpha05'
//初始化WindowInsetsController
val controller = ViewCompat.getWindowInsetsController(view)
//顯示狀態(tài)欄
controller?.show(WindowInsetsCompat.Type.statusBars())
//隱藏狀態(tài)欄
controller?.hide(WindowInsetsCompat.Type.statusBars())
//設(shè)置狀態(tài)欄文字黑色
controller?.isAppearanceLightStatusBars = true
//設(shè)置狀態(tài)欄文字白色
controller?.isAppearanceLightStatusBars = false
控制導(dǎo)航欄:
//顯示
controller?.show(WindowInsetsCompat.Type.navigationBars())
//隱藏
controller?.hide(WindowInsetsCompat.Type.navigationBars())
//導(dǎo)航欄隱藏時手勢操作
controller?.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
//systemBarsBehavior有三個值:
BEHAVIOR_SHOW_BARS_BY_SWIPE
BEHAVIOR_SHOW_BARS_BY_TOUCH
BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
目前可能跟部分手機手勢有沖突
控件鍵盤:

需要界面有EditText并且EditText獲取到焦點才能起作用

//顯示鍵盤
controller?.show(WindowInsetsCompat.Type.ime())
//隱藏鍵盤
controller?.hide(WindowInsetsCompat.Type.ime())
操作所有系統(tǒng)欄:
//全屏顯示:
controller?.hide(WindowInsetsCompat.Type.systemBars())
//顯示其他系統(tǒng)欄:
controller?.show(WindowInsetsCompat.Type.systemBars())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末站蝠,一起剝皮案震驚了整個濱河市坡脐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌欺缘,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挤安,死亡現(xiàn)場離奇詭異谚殊,居然都是意外死亡,警方通過查閱死者的電腦和手機蛤铜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門嫩絮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人围肥,你說我怎么就攤上這事剿干。” “怎么了穆刻?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵置尔,是天一觀的道長。 經(jīng)常有香客問我氢伟,道長榜轿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任朵锣,我火速辦了婚禮谬盐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诚些。我一直安慰自己设褐,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著助析,像睡著了一般犀被。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上外冀,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天寡键,我揣著相機與錄音,去河邊找鬼雪隧。 笑死西轩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的脑沿。 我是一名探鬼主播藕畔,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼庄拇!你這毒婦竟也來了注服?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤措近,失蹤者是張志新(化名)和其女友劉穎溶弟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞭郑,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡辜御,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屈张。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擒权。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖阁谆,靈堂內(nèi)的尸體忽然破棺而出菜拓,到底是詐尸還是另有隱情,我是刑警寧澤笛厦,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布纳鼎,位于F島的核電站,受9級特大地震影響裳凸,放射性物質(zhì)發(fā)生泄漏贱鄙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一姨谷、第九天 我趴在偏房一處隱蔽的房頂上張望逗宁。 院中可真熱鬧,春花似錦梦湘、人聲如沸瞎颗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哼拔。三九已至引有,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間倦逐,已是汗流浹背譬正。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留檬姥,地道東北人曾我。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像健民,于是被迫代替她去往敵國和親抒巢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容