动态显示和隐藏状态栏

动态显示和隐藏状态栏

今天遇到一个需求,产品经理拿着bilibili的客户端给我说,给我做出这个效果;视频播放器的竖屏播放的时候,状态栏是透明的,点击播放器显示状态栏,过了一会儿就隐藏了。这个效果大家可以下载来看看;这个技术难点就是动态的设置状态栏的显示和隐藏。百度了很多资料,总结起来动态隐藏和显示状态栏的代码如下 :

 private void full(boolean enable) {
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        if (enable) {
            lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
            getWindow().setAttributes(lp);
        } else {
            lp.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
            getWindow().setAttributes(lp);
        }
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }

窗口显示时,隐藏所有的屏幕装饰(例如状态条)。使窗口占用整个显示区域。
public static final int FLAG_FULLSCREEN = 0x00000400;
**允许窗口扩展到屏幕之外。
public static final int FLAG_LAYOUT_NO_LIMITS =0x00000200;
这句话很重要,不要这句话的话,状态栏隐藏的时候activity会向下抖动一下,非常重要**

你可能感兴趣的:(android开发从0开始)