封装工具类StatusBarUtils

public class StatusBarUtils {/*** 修改状态栏为全透明** @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以上版本** @param activity* @param colorId*/public static void setStatusBarColor(Activity activity, int colorId) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {Window window = activity.getWindow();
//      window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.setStatusBarColor(activity.getResources().getColor(colorId));}
//        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//            //使用SystemBarTint库使4.4版本状态栏变色,需要先将状态栏设置为透明
//            transparencyBar(activity);
//            SystemBarTintManager tintManager = new SystemBarTintManager(activity);
//            tintManager.setStatusBarTintEnabled(true);
//            tintManager.setStatusBarTintResource(colorId);
//        }}/*** 状态栏亮色模式,设置状态栏黑色文字、图标,* 适配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) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);result = 3;}}return result;}/*** 已知系统类型时,设置状态栏黑色文字、图标。* 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android** @param activity* @param type     1:MIUUI 2:Flyme 3:android6.0*/public static void StatusBarLightMode(Activity activity, int type) {if (type == 1) {MIUISetStatusBarLightMode(activity, true);} else if (type == 2) {FlymeSetStatusBarLightMode(activity.getWindow(), true);} else if (type == 3) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);}}/*** 状态栏暗色模式,清除MIUI、flyme或6.0以上版本状态栏黑色文字、图标*/public static void StatusBarDarkMode(Activity activity, int type) {if (type == 1) {MIUISetStatusBarLightMode(activity, false);} else if (type == 2) {FlymeSetStatusBarLightMode(activity.getWindow(), false);} else if (type == 3) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);}}/*** 设置状态栏图标为深色和魅族特定的文字风格* 可以用来判断是否为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;}
}

第二步
在视图初始化的时候 设置statusBar 即Activity的onCreate()方法和Fragment的onActivityCreate()方法

@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_popularity_list);initStatusBar();//初始化状态栏mUnbinder = ButterKnife.bind(this);      ...       }

第三步

 /*** 说明:* 1. SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖。* 2. SYSTEM_UI_FLAG_LIGHT_STATUS_BAR:设置状态栏图标为黑色或者白色* 3. StatusBarUtil 工具类是修改状态栏的颜色为白色。*/private void initStatusBar() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);StatusBarUtils.setStatusBarColor(PopularityListActivity.this, R.color.colorWhite);}}

php视频直播系统源码Android 修改状态栏颜色 白色、透明色相关推荐

  1. 视频直播系统源码,简单计时器

    视频直播系统源码,实现简单计时器相关的代码 布局 <?xml version="1.0" encoding="utf-8"?> <androi ...

  2. 视频直播系统源码,实例源码系列-设置系统时间

    视频直播系统源码,实例源码系列-设置系统时间 public partial class Form1 : Form {public Form1(){InitializeComponent();}//ap ...

  3. 视频直播系统源码,保存平台视频内容到本地

    视频直播系统源码,保存平台视频内容到本地 首先,动态获取权限,非常重要 //在进入主页面时动态获取(记得在清单文件中添加) if(Build.VERSION.SDK_INT >= Build.V ...

  4. 视频直播系统源码,平台在日间和夜间模式之间来回切换

    视频直播系统源码,平台在日间和夜间模式之间来回切换实现的相关代码 import 'package:flutter/material.dart'; import 'package:flutter_wid ...

  5. 手机视频直播系统源码,直播平台用户登陆签到分析

    2.一套完整的手机视频直播系统源码,必须具备完善的功能机制,才能使自己的产品达到行业市场当中的佼佼者.每家开发的直播平台在功能细节上都会略有不同,就拿云豹科技来说,我们所开发的直播平台,功能细节优化的 ...

  6. 即时通讯源码_一对一视频直播系统源码是如何实现即时通讯呢?

    作者/布谷惠泽 来源/山东布谷鸟网络 在这个快速发展的时代,急功近利,心浮气躁成为当代人的共性.大多数人承受着巨大的压力,在这个时代小心翼翼的行走,而一对一直播交友源码的出现,成为人们宣泄压力的新渠道 ...

  7. 关于视频直播系统源码所开发的直播平台全流程分析

    直播全流程探索 近年来,直播兴起,QQ音乐也接入了直播能力,支持演唱会的直播和主播.明星直播,根据互动方式的不同,我们可以分为互动直播和推流直播,本人有幸参与了直播从无到有的过程:对直播这一块有了一个 ...

  8. 仿六间房网页视频聊天室 网页视频直播系统源码

    完全和56 ,六间房一致的部署方式,无需安装插件 主播,家族,靓号,个人中心,排行榜,任务系统全支持 完备的管理后台,完备的联盟运营体系,完善的主播提成代理提成体系 可直接转播外站视频,不用耗费自己流 ...

  9. 如何进行直播搭建,带货直播系统源码怎么制作?

    现在网上购物已经成了人们生活中不可缺少的一部分,带货直播系统源码也受到广泛关注,今天我们来看下当我们从商城里面浏览搜索了商品,看到了自己喜欢的商品准备加入到购物车的这个功能实现. 带货直播系统源码功能 ...

最新文章

  1. 如何在PHP中保护数据库密码?
  2. 小而美的个人博客——前端——types and archives
  3. Java里面获取当前服务器的IP地址
  4. Bzoj 2152: 聪聪可可(点分治)
  5. Struts2内置拦截器的简要介绍
  6. python用语句输入一个3*3的二维矩阵_python中二维数组的建立,输入和输出
  7. linux ftp日志_linux学习笔记(一)——Linux分区和目录结构
  8. 20175204 张湲祯 2018-2019-2《Java程序设计》第三周学习总结
  9. 读取.properties配置文件(转载)
  10. 推荐几个学霸级的技术公众号陪你过暑假
  11. [转载]c语言中命令行参数argc,argv
  12. 系统集成项目管理工程师13《项目配置管理》
  13. 圆形时间html,html5 canvas实现圆形时钟代码分享
  14. LeetCode 刷题: Fizz Buzz
  15. SpaceSyntax【空间句法】之DepthMapX学习:第三篇 软件介绍与一般分析流程图
  16. EDK2编译环境搭建、编译、在模拟器运行、在笔记本运行(带目录版本)
  17. 敖丙带你设计【秒杀系统】
  18. 五个了解自己天赋优势的分析工具(一)霍兰德兴趣测试
  19. 萨提亚·纳德拉与沈向洋CVPR对谈:那些未来可期的计算机视觉研究与应用
  20. 国内外php主流开源cms、SNS、DIGG、RSS、Wiki汇总

热门文章

  1. 热评云厂商:青云科技4.29亿元,重研发押注更大发展
  2. Matlab之保存/写矩阵数据到文本(fprintf, save, dlmwrite)
  3. 感恩节 今天,留一天时间感谢自己
  4. servlet3.1规范翻译:第13章 安全
  5. android 指南针不稳定,Android指南针方向不可靠(低通滤波器)
  6. CSAPP导读第3章 程序的机器级表示
  7. 如何更换荣耀MagicBook Pro开机启动logo
  8. html微信图片自适应,微信小程序实现图片高度自适应
  9. 老挑毛u盘一键装系统计算机意外地,揭谜一键Ghost的“恶”事 大白菜、老毛桃、通用都不干净...
  10. 基于逆向工程的内存真值检查来保卫网络物理系统