Android studio技术之透明状态栏效果的实现

透明状态栏的效果有很多的app都有用到,效果图如下:

这里写图片描述

上图中是qq的消息界面,可以看到顶部的状态栏是透明化的。


接下来是实现步骤:

  • 首先在创建一个类,这里命名为ImmersiveStatusbar.java,代码实现如下:
package com.xiaoke.accountsoft.util;

import android.app.ActionBar;
import android.graphics.Color;
import android.os.Build;
import android.view.View;
import android.view.Window;

/**
 * Created by zouqi on 2017/4/15.
 */

public class ImmersiveStatusbar {

    private static ImmersiveStatusbar immersiveStatusbar;

    // 构造函数私有化
    private ImmersiveStatusbar() {

    }

    // TODO: 2017/4/17 单例模式
    public static ImmersiveStatusbar getInstance() {

        if (immersiveStatusbar == null) {
            // 加锁提高使用效率
            synchronized (ImmersiveStatusbar.class) {
                if (immersiveStatusbar == null) {
                    immersiveStatusbar = new ImmersiveStatusbar();
                }
            }
        }
        return immersiveStatusbar;

    }

    /***
     * 状态栏透明化
     * @param window    Window对象
     * @param actionBar ActionBar对象
     */
    public void Immersive(Window window, ActionBar actionBar) {

        if (Build.VERSION.SDK_INT >= 21) {

            View view = window.getDecorView();
            // TODO: 2017/4/13 两个FLAG一起使用表示会让应用的主体内容占用系统状态栏的时空间
            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            view.setSystemUiVisibility(option);
            // 将状态栏设置成透明色
            window.setStatusBarColor(Color.TRANSPARENT);

        }
        // 将ActionBar隐藏
        actionBar.hide();

    }
}

上述代码较为简单,均有注释,理解起来不难。

但是需要注意的是我这里先进行了一层if判断,只有系统版本大于或等于5.0的时候才会执行上面的关键代码


另外注意:

这里写图片描述

调用上图所示标注的方法时需要导入V7包,不然会找不到该方法。


导入很简单,在gradle文件中添加依赖即可,如下图:

这里写图片描述

  • 然后在你的活动类里面执行如下图所示的方法即可:

这里写图片描述

即活动设置使用的布局文件之后紧接方法:ImmersiveStatusbar.getInstance().Immersive(getWindow(), getActionBar());

这里要传入两个参数,一个是Window对象和ActionBar对象。


  • 最后运行项目效果图如下所示:

这里写图片描述

这里写图片描述

这里写图片描述

透明状态栏效果成功的实现了。

================================================================

每天进步一点点!加油!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值