Android SystemUI setSystemUiVisibility()参数Flag详解

news2025/1/11 10:12:13

1:相关 Flag 特性详解 

View.SYSTEM_UI_FLAG_LAYOUT_STABLE

特性:默认状态下 ,稳定页面显示布局。

  StatusBarNavigationBar动态显示和隐藏时,系统为 fitSystemWindow=“true”view设置的padding大小都不会变化,所以view布局的位置也不会发生移动。当使用SYSTEM_UI_FLAG_LAYOUT_FULLSCREENSYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION),同时view设置fitSystemWindow=true时,系统会为此View自动设置padding,此padding的大小由View.fitSystemWindows(Rect)Rect提供。

  一般情况下,当StatusBarNavigationBar显示时,paddingTop的大小为StatusBar的高度。

  StatusBarNavigationBar被隐藏时,ViewpadingBottompaddingTop的大小就变成了0,因此StatusBarNavigationBar的显示和隐藏造成的padding变化,进而View内容的位置变化,从而造成应用显示位置闪动的问题,影响使用体验。

  使用SYSTEM_UI_FLAG_LAYOUT_STABLE的作用,就是当StatusBarNavigationBar的显示和隐藏,系统为View设置的padding都不会变化,因此View内容的位置不会变化,此即为稳定页面显示的布局。

  当设置 SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_STABLE时, 会同时隐藏 StatusBar 和应用内的 Actionbar ,但StatusBar所占空间不会隐藏,只会变成空白。同时View所在window的显示范围也不会伸展到StatusBar所占空间。这时,如果是加上SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN属性,View所在window的显示范围,则会伸展到 StatusBar所在的空间。同样对 NavigationBar如此操作,也会是一样的效果。

2:相关 Flag 特性详解 

View.SYSTEM_UI_FLAG_FULLSCREEN

特性:隐藏SysmteUI系统界面StatusBar

  这属性与 WindowManager.LayoutParams.FLAG_FULLSCREEN有相同视觉效果。不同点在于,此Flag一般用在暂时需要全屏的情形(如:阅读应用,全屏视频等),以便让用户的注意力暂时集中在内容上,而如果只是简单的需要一直停留在全屏状态(如:游戏应用),使用WindowManager.LayoutParams.FLAG_FULLSCREEN则是更好的选择。

  Flag也会因为各种的界面交互(如:跳转到其他应用、 下拉StatusBar、弹出键盘等)的触发而被系统清除,退出全屏显示StatusBar

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

特性:在不隐藏StatusBar的情况下,将View所在Window的显示范围扩展到StatusBar下。同时,应用界面部分内容被StatusBar覆盖遮挡。

  当使用此Flag时,设置fitSystemWindow=trueview,会被系统自动添加大小为statusBarActionBar高度之和相同的paddingTop。当window设置WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS时,此Flag会被系统会自动添加。

3:相关 Flag 特性详解 

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

特性:隐藏SysmteUI系统界面NavigationBar

  此时用户的任何界面交互,都会导致此Flag被系统清除,进而导航栏自动重新显示,同时 View.SYSTEM_UI_FLAG_FULLSCREEN 也会被自动清除,因此 StatusBar也会同时显示出来。

View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

特性:在不隐藏导航栏的情况下,将Activity的显示范围扩展到导航栏底部。同时Activity的部分内容也因此被NavigationBar覆盖遮挡。

  当使用此Flag时,设置fitSystemWindow=trueview,会被系统自动添加大小为NavigationBar高度相同的paddingBottom。当window设置WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION时,此Flag会被系统会自动添加。

 

4:相关 Flag 特性详解 

View.SYSTEM_UI_FLAG_IMMERSIVE

特性:避免某些用户交互造成系统自动清除全屏状态。

  View.SYSTEM_UI_FLAG_IMMERSIVEView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY的使用主要是为了当设置全屏模式时,避免某些用户交互造成系统自动清除全屏状态。当使用View.SYSTEM_UI_FLAG_HIDE_NAVIGATION隐藏导航栏时,配合此特性,只有第三、四种操作会导致导航栏的隐藏状态被系统自动清除;否则,任何交互都会导致导航栏的隐藏状态被系统自动清除。此标识只有配合View.SYSTEM_UI_FLAG_HIDE_NAVIGATION才有作用

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

特性:避免某些用户交互造成系统自动清除全屏状态。同时Activity的部分内容也因此被StatusBar覆盖遮挡

  View.SYSTEM_UI_FLAG_HIDE_NAVIGATION隐藏导航栏,配合使用此Flag,只有用户的第四种操作会导致状态栏或(和)导航栏的隐藏状态被系统自动清除。否则任何交互都会导致相应状态的清除。此Flag只有配合SYSTEM_UI_FLAG_FULLSCREENSYSTEM_UI_FLAG_HIDE_NAVIGATION使用时才会起作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1128317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《机器学习实战》学习记录-ch4

4.1 线性回归 import numpy as np import matplotlib.pyplot as plt import pandas as pdX 2 * np.random.rand(100,1) # 生成 [0,1) 之间的数据 y 4 3 * X np.random.randn(100,1) # 生成一组正态分布的数据, 高斯噪声X_b np.c_[np.ones((100,1)), X] X_b[:5…

h265格式怎么转换mp4?一分钟教会你!

H265是一种视频编码标准,也被称为HEVC(High Efficiency Video Coding)。由联合视频组(JVET)开发的,是一种专为高清视频设计的压缩标准。播放H265文件,通常需要使用支持H265解码的播放器&#xf…

Docker 网络与Cgroup资源限制

目录 一、Docker 网络实现原理: 二、Docker 的网络模式: 三、网络模式详解: 1. host模式: 2. container模式: 3. none模式: 4.bridge模式: 5.自定义网络: 四、Cgroup资源控制: …

仿真调试stm32汇编代码

软件准备 ubuntu交叉编译链工具:arm-none-eabi-gcc, arm-none-eabi-as, arm-none-eabi-ldqemu仿真软件:支持stm32版本调试工具:gdb-multiarch 启动仿真实验 汇编代码 .thumb .syntax unified.equ STACKINIT, 0x20005000.section .text .o…

玩具玩偶经营小程序商城的作用是什么

对品牌商而言,传统的批发商模式,不利于品牌传播及构建自有私域流量池,无法与消费者面对面交流,一旦销售量不好,只能受限于下游的以销定产。无论销售商还是品牌商即使入驻第三方平台,也会面临佣金、广告位问…

开发习惯养成系列

1 开发习惯养成系列 2

【趣味Javascript】前端开发中不为人知的LHS和RHS查询,你真的弄明白了吗? 《1024程序员节特别篇》

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…

你知道AI数字人可以用在哪些行业吗?

引言: 随着科技的不断进步,人工智能(AI)已经渗透到各个领域,其中包括宣传营销。AI数字人是宣传营销领域的一项革命性技术,它们为企业提供了全新的机会,从客户互动到市场分析,再到销…

jenkins实践篇(1)——基于分支的自动发布

问题背景 想起初来公司时,我们还是在发布机上直接执行发布脚本来运行和部署服务,并且正式环境和测试环境的脚本都在一起,直接手动操作脚本时存在比较大的风险就是将环境部署错误,并且当时脚本部署逻辑还没有检测机制,…

初学编程入门基础教学视频,初学编程学什么语言

学习编程捷径:(不论是正在学习编程的大学生,还是IT人士或者是编程爱好者,在学习编程的过程中用正确的学习方法可以达到事半功倍的效果。对于初学者,可以通过下面的方法学习编程,通过对成百上千个实例练习&a…

ilr normalize isometric log-ratio transformation

visium_heart/st_snRNAseq/05_colocalization/create_niches_ct.R at 5b30c7e497e06688a8448afd8d069d2fa70ebcd2 saezlab/visium_heart (github.com) 更多内容,关注微信:生信小博士 The ILR (Isometric Log-Ratio) transformation is used in the anal…

Spring Boot集成RESTful API

在Spring Boot中集成一个RESTful API是我们在实际开发中较为常见的一种开发任务,以下通过一个小的案例来展示在Spring Boot中创建RESTful API来编写一个单元测试。 本节使用到的注解: Controller:修饰class,用来创建处理http请求的…

让锅碗瓢盆变成我们生活的快乐插曲

🌟现代生活中,厨房不再只是一个独立的烹饪区域,而是成为了家庭生活的核心。开放式厨房的设计概念已经成为越来越多家庭的选择,它不仅为我们带来了便利和舒适,还创造了一种与家人和朋友共享美食的愉悦体验。让我们一起探…

线程池常见面试题总结

线程池的工作原理和实现已经在之前的文章中介绍 本文主要总结面试中线程池常问题目。 1、有几种常见的线程池(必知必会)? 1)定长线程池(FixedThreadPool) 2)定时线程池(ScheduledThreadPoo…

25.2 MySQL 运算符

1. 伪表 在MySQL中, DUAL是一个特殊的单行, 单列的虚拟表, 主要用于在SELECT语句中计算表达式或执行函数, 而不需要从实际的数据表中检索数据. 使用DUAL的原因主要有以下几点:* 1. 简化计算: 通过在SELECT语句中使用DUAL, 可以方便地计算表达式或执行函数, 而无需创建临时表或…

android点击全屏预览照片第三方库使用

android点击全屏预览照片第三方库使用-imgepreviewlibrary 移动端我们经常会遇到放大预览照片,如果是一张照片,那就全屏展示图片就好了,但是如果是一个列表,滑动查看,我们一般会借助viewpager进行实现,但是…

【鸿蒙软件开发】ArkTS通用事件

文章目录 前言一、点击事件1.1 基础介绍1.2 ClickEvent对象说明1.3 示例代码 二、触摸事件2.1 基础介绍2.2 ClickEvent对象说明2.3 示例代码 二、焦点事件2.2 基础介绍3.2 示例代码 总结 前言 在我们的ArkTS中有一些通用的事件,他们在所有的组件中都可以用&#xf…

号外!百度Comate代码助手全新上线SaaS服务 - 免费申请试用+深入教程解读!

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

全国高清影像数据导出TIF有多大?

全国数据导出为TIF文件之后有多大呢? 我们今天来分析探讨一下这个问题。 01背景 最近,有用户提出在交付数据时,需要交付TIF格式的数据,但我们的地图是基于自研的DAT格式分块存储。 我们在《毫不费力,让内网多一个…

外汇天眼:假冒违法平台害人害己,监管“铁拳”打击!

近年来,金融市场上的假冒违法平台问题日益严重,给投资者和监管机构带来了巨大的挑战。对此,英国FCA、意大利CONSOB和塞浦路斯CySEC等监管机构纷纷出手,打击假冒违法平台,以保护投资者的权益,整肃整个外汇市…