距离上一篇 Android沉浸式状态栏(一)已经很久了,上一篇文章主要是讲原理以及如何实现的,在实际运用上面不是很方便。本篇文章引入框架和工具类来针对沉浸式状态栏进行处理。
布局代码如下所示:
<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#f00"    android:fitsSystemWindows="true"    android:orientation="vertical"    tools:context="study.com.steepdemo2.MainActivity">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!"/>LinearLayout>
上面布局代码中的 android:background=”#f00”android:fitsSystemWindows=”true”是必须添加的属性,其中 android:background=”#f00”在使用工具类时代表的是状态栏的背景色。

一、工具类StatusBarUtil


AndroidStudio工程不做任何处理的情况下页面的布局图如下所示: Android沉浸式状态栏(二)_第1张图片

1.1 沉浸式状态栏

调用如下方法
StatusBarUtil.setStatusBarTranslucent(this, false, false, false);可以达到沉浸式状态栏的效果:

Android沉浸式状态栏(二)_第2张图片
Android4.4沉浸式.png Android沉浸式状态栏(二)_第3张图片
Android5.0沉浸式.png

1.2 修改Android5.0版本以上状态栏字体颜色

在软件开发中经常会遇到UI图中状态栏的字体颜色为黑色,调用如下方法
StatusBarUtil.setStatusBarTranslucent(this, true, false, false);可以达到如下效果:

Android沉浸式状态栏(二)_第4张图片

1.3 修改Android5.0版本以上状态栏为半透明

调用如下方法StatusBarUtil.setStatusBarTranslucent(this, false, true, false);可以达到如下效果:

Android沉浸式状态栏(二)_第5张图片

1.4 修改Android5.0 版本以上底部导航栏为全透明

调用如下方法StatusBarUtil.setStatusBarTranslucent(this, false, false, true);可以达到如下效果:

Android沉浸式状态栏(二)_第6张图片

二、框架SystemBarTint

import android.graphics.Color;import android.os.Build;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.Window;import android.view.WindowManager;import com.readystatesoftware.systembartint.SystemBarTintManager;/** * 沉浸式状态栏第二版,用框架的方式来处理沉浸状态栏 */public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //方法一://        StatusBarUtil.setStatusBarTranslucent(this, false, true, false);        //方法二:       method2();    }    private void method2() {        // 4.4及以上版本开启,5.0以上是半透明的        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            setTranslucentStatus(true);        }        // create our manager instance after the content view is set        SystemBarTintManager tintManager = new SystemBarTintManager(this);        // enable status bar tint        tintManager.setStatusBarTintEnabled(true);        // enable navigation bar tint        tintManager.setNavigationBarTintEnabled(true);        // 自定义颜色        tintManager.setTintColor(Color.parseColor("#24b7a4"));    }    private void setTranslucentStatus(boolean on) {        Window win = getWindow();        win.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);        WindowManager.LayoutParams winParams = win.getAttributes();        final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;        if (on) {            winParams.flags |= bits;        } else {            winParams.flags &= ~bits;        }        win.setAttributes(winParams);    }}
效果图如下所示: Android沉浸式状态栏(二)_第7张图片

项目源码地址

更多相关文章

  1. Android实现无标题栏全屏的方法
  2. Android版本适配问题处理
  3. Android中EditText 设置 imeOptions 无效问题的解决方法
  4. 从Android读取Unity assets下的图片并保存为Bitmap格式
  5. Android有两种方法检测USB设备插入
  6. Linux通过shell脚本实现JDK版本之间的快速切换
  7. 开机动画(闪动的ANDROID字样的动画图片)
  8. android android屏幕禁止休眠和锁屏的方法

随机推荐

  1. Android音频开发(3):使用AudioRecord实现录
  2. android 只能输入数字和字母并且弹出数字
  3. Android Binder原理(一)学习Binder前必须要
  4. Android消息循环
  5. 系出名门Android(1) - 在 Windows 下搭建
  6. ch022 Android Handler
  7. 【Android布局】在程序中设置android:gra
  8. android分辨率适配
  9. android:gravity/android:layout_gravity
  10. Android开发经典书籍下载——《Android 4