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

歡迎訪問 生活随笔!

生活随笔

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

Android

android白色字体代码,Android实现状态栏白底黑字效果示例代码

發布時間:2025/3/11 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android白色字体代码,Android实现状态栏白底黑字效果示例代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

本文主要給大家介紹了關于Android如何實現狀態欄白底黑字的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

一、描述

在項目中有的時候Ui設計狀態欄背景顏色是白色的,雖然還挺好看,不過可坑了我們做程序的,需要對很多機型進行適配,此文章列舉了兼容多個機型版本的狀態欄方案。

二、狀態欄

1 只要設置下面的代碼即可,我是放在BaseActivtiy里面用的

StatusBarUtil.transparencyBar(this); //設置狀態欄全透明

StatusBarUtil.StatusBarLightMode(this); //設置白底黑字

2 狀態欄兼容類,直接Copy即可

public class StatusBarUtil {

/**

* 修改狀態欄為全透明

*

* @param activity

*/

@TargetApi(19)

public static void transparencyBar(Activity activity) {

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

Window window = activity.getWindow();

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

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

Window window = activity.getWindow();

window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,

WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

}

}

/**

* 狀態欄亮色模式,設置狀態欄黑色文字、圖標,

* 適配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android

*

* @param activity

* @return 1:MIUUI 2:Flyme 3:android6.0

*/

public static int StatusBarLightMode(Activity activity) {

int result = 0;

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

if (MIUISetStatusBarLightMode(activity, true)) {

//小米

result = 1;

} else if (FlymeSetStatusBarLightMode(activity.getWindow(), true)) {

//魅族

result = 2;

} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

//6.0以上

activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

result = 3;

} else {

//其他的都設置狀態欄成半透明的,以下設置半透明是調用第三方的,根據個人需求更改

// ImmersionBar.with(activity).statusBarDarkFont(true, 0.5f).init();

}

}

return result;

}

/**

* 設置狀態欄圖標為深色和魅族特定的文字風格

* 可以用來判斷是否為Flyme用戶

*

* @param window 需要設置的窗口

* @param dark 是否把狀態欄文字及圖標顏色設置為深色

* @return boolean 成功執行返回true

*/

public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) {

boolean result = false;

if (window != null) {

try {

WindowManager.LayoutParams lp = window.getAttributes();

Field darkFlag = WindowManager.LayoutParams.class

.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON");

Field meizuFlags = WindowManager.LayoutParams.class

.getDeclaredField("meizuFlags");

darkFlag.setAccessible(true);

meizuFlags.setAccessible(true);

int bit = darkFlag.getInt(null);

int value = meizuFlags.getInt(lp);

if (dark) {

value |= bit;

} else {

value &= ~bit;

}

meizuFlags.setInt(lp, value);

window.setAttributes(lp);

result = true;

} catch (Exception e) {

}

}

return result;

}

/**

* 需要MIUIV6以上

*

* @param activity

* @param dark 是否把狀態欄文字及圖標顏色設置為深色

* @return boolean 成功執行返回true

*/

public static boolean MIUISetStatusBarLightMode(Activity activity, boolean dark) {

boolean result = false;

Window window = activity.getWindow();

if (window != null) {

Class clazz = window.getClass();

try {

int darkModeFlag = 0;

Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");

Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");

darkModeFlag = field.getInt(layoutParams);

Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);

if (dark) {

extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//狀態欄透明且黑色字體

} else {

extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字體

}

result = true;

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

//開發版 7.7.13 及以后版本采用了系統API,舊方法無效但不會報錯,所以兩個方式都要加上

if (dark) {

activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

} else {

activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);

}

}

} catch (Exception e) {

}

}

return result;

}

}

白底黑字

半透明效果

三、注意事項

在適配中,有遇到一個 華為EMUI3.1 的手機設置上后有出現一些異常問題,我看有的第三方庫也有對這個版本單獨進行處理,應該是有點問題,所以我在項目中就直接屏蔽了這個版本的適配。

四、相關資料

五、總結

此文章的工具類是從其他地方Copy來,精簡了一些沒有用到的代碼,如果需要其他代碼的,從第四點的鏈接進入查看就好,這類代碼都是Copy來Copy去的,也找不到原創在哪了。。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

總結

以上是生活随笔為你收集整理的android白色字体代码,Android实现状态栏白底黑字效果示例代码的全部內容,希望文章能夠幫你解決所遇到的問題。

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