日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android实现系统状态栏的隐藏方法,Android隐藏系统状态栏(沉浸式状态栏)和设置状态栏颜色...

發布時間:2023/12/15 Android 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android实现系统状态栏的隐藏方法,Android隐藏系统状态栏(沉浸式状态栏)和设置状态栏颜色... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android 5.0(API 21)之后就可以對系統狀態欄進行設置了,這里我不是想深入討論對系統狀態欄的一些高級設置,因為一般也用不到,我只想說最常見的兩種場景

隱藏系統狀態欄,這就是感覺很牛逼的沉浸式狀態欄

狀態欄顏色變化后狀態欄顯示內容顏色隨之改變

1. 沉浸式狀態欄

這種最簡單,只需要拿到當前activity window的DecorView,然后設置setSystemUiVisibility()即可。

示例:

Window window = activity.getWindow();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);

window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

window.setStatusBarColor(Color.TRANSPARENT);

}

其實想要沉浸式狀態欄,只需要設置View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN屬性足夠了,其他的只是些通用做法。比如View.SYSTEM_UI_FLAG_LAYOUT_STABLE是設置狀態欄字體顏色還是跟隨系統。window.setStatusBarColor(Color.TRANSPARENT)是設置狀態欄為全透明。

上面代碼的作用就是狀態欄的高度沒有了,但是注意狀態欄的顯示還是有的,就是這樣:

是不是很丑?這時候你的產品經理肯定會不滿意,要你改,我猜他是不是想要這種效果:

如果我猜對了,那么就繼續看吧!

2. 重新設置你的TitleBar

這個解決方法更簡單,就是改變TitleBar的高度和paddingTop,看下面示例就會豁然開朗:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

ViewGroup.LayoutParams params = view.getLayoutParams();

int topMargin = getStatusBarHeight(view.getContext());

params.height = params.height + topMargin;

view.setPadding(view.getPaddingLeft(), view.getPaddingTop() + topMargin, view.getPaddingRight(), view.getPaddingBottom());

view.setLayoutParams(params);

}

這里的view當然就是你的TitleBar,狀態欄的顏色是你的TitleBar的背景色。效果見上圖。

getStatusBarHeight(context)應該不用我說了,不會的話自己百度。

3. 設置狀態欄顯示字體內容顏色

這種場景很常見,比如上面的圖,如果你的TitleBar是白色或者淺色,那么你狀態欄的顯示內容將會看不見,或者很丑。

這個時候你需要改變你狀態欄顯示內容的顏色,只有幾行代碼:

Window window = activity.getWindow();

if (ColorUtils.calculateLuminance(color) >= 0.5) {

window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

} else {

window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);

}

color就是你設置的狀態欄顏色,或者說是TitleBar的背景色,但注意這是一個int值,不是resourceId。

ColorUtils.calculateLuminance(color) >= 0.5的作用只是確定這個顏色是亮色還是暗色。

View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR是幫你把狀態欄顯示內容變成黑色,而View.SYSTEM_UI_FLAG_LAYOUT_STABLE是跟隨系統。

小結

學會以上三點,你基本可以交差了,但是下面的這種場景你應該還是要知道。

4. 狀態欄著色

可能由于某種特定原因,你可能想給狀態欄設置另外一種顏色,那么這也很簡單:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

Window window = activity.getWindow();

window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

window.setStatusBarColor(getResources().getColor(R.color.your_color));

}

比如下圖我把狀態欄設置成黑色:

總結

以上是生活随笔為你收集整理的android实现系统状态栏的隐藏方法,Android隐藏系统状态栏(沉浸式状态栏)和设置状态栏颜色...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。