Android-->沉浸式状态栏字体颜色的修改(只针对小米和魅族)

来源:互联网 发布:淘宝新店铺的扶持 编辑:程序博客网 时间:2024/05/16 04:18

关于官网对沉浸式状态的描述:

魅族:
http://open-wiki.flyme.cn/index.php?title=Flyme%E7%B3%BB%E7%BB%9FAPI#.E4.BA.8C.E3.80.81.E6.B2.89.E6.B5.B8.E5.BC.8F.E7.8A.B6.E6.80.81.E6.A0.8F

小米:
http://dev.xiaomi.com/doc/p=4769/index.html


整理代码如下:

小米:

public void setStatusBarDarkMode(boolean darkmode, Activity activity) {    Class<? extends Window> clazz = activity.getWindow().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);        extraFlagField.invoke(activity.getWindow(), darkmode ? darkModeFlag : 0, darkModeFlag);    } catch (Exception e) {        e.printStackTrace();    }}

魅族:

public static boolean setStatusBarDarkIcon(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) {            Log.e("MeiZu", "setStatusBarDarkIcon: failed");        }    }    return result;}

其他平台,大家找到了方法,可以联系我.我来补充,谢谢;


至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.

1 0
原创粉丝点击