Android如何实现状态栏白底黑字效果

  介绍

这篇文章给大家分享的是有关Android如何实现状态栏白底黑字效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强>一、描述

在项目中有的时候Ui设计状态栏背景颜色是白色的,虽然还挺好看,不过可坑了我们做程序的,需要对很多机型进行适配,此文章列举了兼容多个机型版本的状态栏方案。

<强>二、状态栏

<强> 1只要设置下面的代码即可,我是放在BaseActivtiy里面用的

StatusBarUtil.transparencyBar(这);,//设置状态栏全透明   StatusBarUtil.StatusBarLightMode(这);,//设置白底黑字

<强> 2状态栏兼容类,直接复制即可

public  class  StatusBarUtil  {/* *   *,才能修改状态栏为全透明   ,*   *,才能@param 活动   ,*/,@TargetApi (19)   ,public  static  void  transparencyBar (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 活动   *,才能@return  1: MIUUI  2: Flyme  3: android6.0   ,*/,public  static  int  StatusBarLightMode (Activity 活动),{   int 才能;result =, 0;   if 才能;(Build.VERSION.SDK_INT 祝辞=,Build.VERSION_CODES.KITKAT), {   ,,if  (MIUISetStatusBarLightMode(活动,,真的),{   ,,,//小米   ,,,result =, 1;   ,,},else  if  (FlymeSetStatusBarLightMode (activity.getWindow(),,真的)),{   ,,,//魅族   ,,,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(活动).statusBarDarkFont(真的,,0.5 f) .init ();   ,,}   ,,}   return 才能;结果;   ,}/* *   *,才能设置状态栏图标为深色和魅族特定的文字风格   *才能,可以用来判断是否为Flyme用户   ,*   *,才能@param  window 需要设置的窗口   *,才能@param  dark 是否把状态栏文字及图标颜色设置为深色   *,才能@return  boolean 成功执行返回现实   ,*/,public  static  boolean  FlymeSetStatusBarLightMode (Window 窗口,boolean 黑暗),{   boolean 才能;result =,假;   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(真正的);   ,,,meizuFlags.setAccessible(真正的);   ,,,int  bit =, darkFlag.getInt(空);   ,,,int  value =, meizuFlags.getInt (lp);   ,,,if (黑暗),{   ,,,,value  |=,钻头;   ,,,},{else    ,,,,value ,=, ~些;   ,,,}   ,,,meizuFlags.setInt (lp,,值);   ,,,window.setAttributes (lp);   ,,,result =,真的;   ,,},catch  (Exception  e), {      ,,}   ,,}   return 才能;结果;   ,}/* *   *才能,需要MIUIV6以上   ,*   *,才能@param 活动   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android如何实现状态栏白底黑字效果