博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android状态栏和NavigationBar的动态控制显示
阅读量:4325 次
发布时间:2019-06-06

本文共 2798 字,大约阅读时间需要 9 分钟。

项目在开发阅读器,阅读器对阅读界面的要求就是在工具栏不显示的状态下,ActionBar和NavigationBar都是不显示的,当工具栏显示时它们都出来,这就需要动态控制它们的显示与隐藏。

第一阶段:没有考虑NavigationBar的情况,单纯控制ActionBar的显示与隐藏

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

第二阶段:测试发现华为手机NavigationBar会影响使用,开始动态设置ActionBar和NavigationBar的隐藏与显示

private void full(boolean enable) {        if (enable) {            if (Build.VERSION.SDK_INT >= 19) {                getWindow().getDecorView().setSystemUiVisibility(                        View.SYSTEM_UI_FLAG_LAYOUT_STABLE                                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION                                | View.SYSTEM_UI_FLAG_FULLSCREEN                                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);            }        } else {            if (Build.VERSION.SDK_INT >= 19) {                getWindow().getDecorView().setSystemUiVisibility(                        View.SYSTEM_UI_FLAG_LAYOUT_STABLE                                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);            }        }

上面讲实现,再来看看用法:

android想要应用运行时全屏有一种方法是在activity的onCreat方法中加入如下代码:getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);并且需要在setContentView()之前,否则无效过。从这么多的苛刻条件可以看出这种方法无法满足动态控制。

下面的方法可以满足这个需要。调用View的 setSystemUiVisibility()

方法,其参数如下:

1     View.SYSTEM_UI_FLAG_VISIBLE, //显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。 2  3     View.INVISIBLE, //隐藏状态栏,同时Activity会伸展全屏显示。 4  5     View.SYSTEM_UI_FLAG_FULLSCREEN ,  //Activity全屏显示,且状态栏被隐藏覆盖掉。 6  7     View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, //Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。 8  9     View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION, //效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN10 11     View.SYSTEM_UI_LAYOUT_FLAGS, //效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN12 13     View.SYSTEM_UI_FLAG_HIDE_NAVIGATION, //隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。14 15     View.SYSTEM_UI_FLAG_LOW_PROFILE,  //状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。

Color:

Android design theme color

 网文参考:

转载于:https://www.cnblogs.com/aimqqroad-13/p/8477642.html

你可能感兴趣的文章
小D课堂 - 新版本微服务springcloud+Docker教程_2_03常见的微服务框架
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-01 什么是微服务的注册中心
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-02CAP理论知识
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-03CAP原理、常见面试题
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-06 服务注册和发现之Eureka Client搭建商品服务实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-07 Eureka服务注册中心配置控制台问题处理...
查看>>
小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验...
查看>>
小马哥_汇总
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-02 微服务调用方式之ribbon实战 订单调用商品服务...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-03 高级篇幅之Ribbon负载均衡源码分析实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-06 Feign核心源码解读和服务调用方式ribbon和Feign选择...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-02 Netflix开源组件断路器
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-01分布式核心知识之熔断、降级
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-04 feign结合hystrix断路器开发实战下...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-03 feign结合hystrix断路器开发实战上...
查看>>