Android官方开发文档Training系列课程中文版:管理系统UI之隐藏状态条

原文地址:http://android.xsoftlab.net/training/system-ui/status.html

这节课将会介绍如何隐藏不同的版本的状态条。隐藏状态条可以使内容展示区域更大,因此可以提供一种更强的身临其境的用户体验。

含有状态条的APP:

隐藏状态条的APP,注意这里的ActionBar同样也隐藏了。绝不要在没有状态条的时候还显示ActionBar:

在Android 4.0以下的版本中隐藏状态条

开发者可以通过设置WindowManager的标志来隐藏Android 4.0之前的状态条。除此之外在清单文件中设置Activity的主题也可以达到同样的效果。如果需要状态条一直保持隐藏状态,那么在清单文件中设置主题是我们的首选方式:

<application
    ...android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >...
</application>

使用Activity主题的优势在于:

  • 相对于动态设置来说更易于维护也减小了出错的风险。
  • 这会使得UI转场更加平滑,因为系统在实例化Activity之前J就已经得到了它需要的UI渲染信息(状态条隐藏等等)。

开发者可以通过设置WindowManager的标志来达到同样的目的。这种方法适合用户与APP交互的时候使用。

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// If the Android version is lower than Jellybean, use this call to hide// the status bar.if (Build.VERSION.SDK_INT < 16) {getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);}setContentView(R.layout.activity_main);}...
}

当你设置了WindowManager标志(不论是通过Activity的主题还是动态的设置),那么该标志则会一直保留,直到将该标志移除。

在Android 4.1以上的版本中隐藏状态条

你可以通过使用setSystemUiVisibility()方法隐藏Android 4.1以上系统的状态条。setSystemUiVisibility()为单个的View层级设置了UI标志;这些设置被整合进了Window层级。setSystemUiVisibility()比WindowManager的控制粒度更细。下面的代码隐藏了状态条:

View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar = getActionBar();
actionBar.hide();

要注意以下几个方面:

  • 一旦UI的标志被清除(比如,通过导航的方式离开了Activity),那么如果你想重新隐藏状态条的话则需要重新设置这些标志。
  • 在不同的地方设置UI标志还有些差异。如果在Activity的onCreate()方法中隐藏了系统条,这时用户返回了桌面,那么系统条则会再次出现。当用户重新打开Activity时,onCreate()不会被再次调用,所以系统条会一直保持可见。如果你想使系统条还保持原来的状态的话,则需要在onResume()中或onWindowFocusChanged()中设置相应的标志。
  • setSystemUiVisibility()只有在View可见的时候设置才有效。
  • 由导航的方式离开View会使由setSystemUiVisibility()设置的标志被清除。

使内容显示在状态条的后面

在Android 4.1以上的版本中,你可以将应用的内容区域显示在状态条的后面,所以内容区域的尺寸并不会随着状态条的隐藏显示而变化。通过使用SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN标志来实现这一点。你可能还需要使用SYSTEM_UI_FLAG_LAYOUT_STABLE标志来辅助APP维持一个稳定的布局状态。

当你使用了这项方法,那么你就有责任确保APP UI的边界部分不会被系统条所遮盖。在很多情况下,你可以通过在布局文件中添加android:fitsSystemWindows=true属性来处理这种情况。它会调整父ViewGroup的内边距来留出系统窗口的空间,这种方法足以应对大多数的应用。

随着ActionBar的变换同步状态条

在Android 4.1以上的版本中,为了避免重新调整布局的尺寸,当ActionBar显示或隐藏时,你可以开启ActionBar的Overlay Mode。当处于Overlay Mode下时,Activity的布局会使用所有的可用空间,就仿佛ActionBar不存在一样,系统会将ActionBar绘制在布局的上面一层。这会使布局顶部的部分变的模糊,不过当ActionBar显示或者隐藏时,系统并不会重写调整布局的尺寸,这会使得转场过程无缝对接。

为了可以使ActionBar开启Overlay Mode,你需要创建一个自定义主题,并需要继承已有的携带ActionBar的主题,并需要将android:windowActionBarOverlay属性设置为true即可。

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

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

相关文章

python实现大批量pdf格式论文的重命名与目录制作功能

Python实现批量PDF文件统计处理&#xff1a;https://www.jianshu.com/p/1ec8f4314611 第一步&#xff1a;批量读取pdf文件 # -*- coding: utf-8 -*- """ Created on Sat Jun 8 15:30:22 2019 author: Administrator """import os from io impo…

论文浅尝 - ACL2020 | 用于回答知识库中的多跳复杂问题的查询图生成方法

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;ACL 2020链接&#xff1a;https://www.aclweb.org/anthology/2020.acl-main.91.pdf1.介绍在以往的工作中&#xff0c;知识图谱复杂问答一般被分为两种类型分别处理&#xff1a;其一是带有约束的问题&…

深入理解JSCore

背景 动态化作为移动客户端技术的一个重要分支&#xff0c;一直是业界积极探索的方向。目前业界流行的动态化方案&#xff0c;如Facebook的React Native&#xff0c;阿里巴巴的Weex都采用了前端系的DSL方案&#xff0c;而它们在iOS系统上能够顺利的运行&#xff0c;都离不开一个…

Android官方开发文档Training系列课程中文版:手势处理之监测通用手势

原文地址&#xff1a;http://android.xsoftlab.net/training/gestures/index.html 引言 这节课将会学习如何让用户通过触摸手势与APP产生交互。Android提供了许多相关API来帮助你创建、检测手势。 尽管APP不应该将触摸手势作为基本的输入特性&#xff0c;但是触摸手势可以使…

全球44家机构,55位大佬,历时两年,打造最强NLG评测基准!

文 | 小轶&#xff08;大家好&#xff0c;我是已经鸽了夕总仨月没写文章了的小轶&#xff08;y&#xff09;&#xff01;新的一年一定改过自新&#xff0c;多读paper多写稿&#xff0c;望广大读者敦促(ง •̀_•́)ง&#xff09;今天要和大家分享的是卖萌屋学术站上的本月最热…

LeetCode 171. Excel表列序号(26进制转10进制)

1. 题目 给定一个Excel表格中的列名称&#xff0c;返回其相应的列序号。 例如&#xff0c;A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 输入: "A" 输出: 1输入: "AB" 输出: 28输入: "ZY" 输出: 701来源&#xff1a;力扣&…

用户评论标签的抽取

原文链接&#xff1a;https://blog.csdn.net/shijing_0214/article/details/71036808 无意中在知乎中看到一个问题&#xff1a;淘宝的评论归纳是如何做到的&#xff1f; 了解之后觉得较为容易实现&#xff0c;就简单实现了一个对用户评论的标签抽取功能&#xff0c;纯属兴趣所致…

开源开放|数据地平线通过OpenKG开放全行业因果事理、大规模实时事理等7类常识知识库...

本期介绍开放中文简称、中文同义、中文抽象、全行业因果事理、实体概念描述、实时事理知识库、军事武器装备知识等七个事理相关知识图谱。截至目前&#xff0c;该七个数据集规模达数千万、累计下载次数达两千余次&#xff0c;可用于底层事理推理、查询扩展、数据增强等多个自然…

写给工程师的十条精进原则

引言 时间回到8年前&#xff0c;我人生中第一份实习的工作&#xff0c;是在某互联网公司的无线搜索部做一个C工程师。当时的我可谓意气风发&#xff0c;想要大干一场&#xff0c;结果第一次上线就写了人生中第一个Casestudy。由于对部署环境的不了解&#xff0c;把SVN库里的配置…

Android官方开发文档Training系列课程中文版:手势处理之记录手指移动的轨迹

原文地址&#xff1a;http://android.xsoftlab.net/training/gestures/movement.html 这节课将会学习如何在触摸事件中记录手指移动的轨迹。 当手指触摸的位置、压力或者尺寸发生变化时&#xff0c;ACTION_MOVE事件就会被触发。与Detecting Common Gestures中描述的一样&…

我删掉了Transformer中的这几层…性能反而变好了?

文 | chaos编 | 小轶基于Transformer结构的各类语言模型&#xff08;Bert基于其encoder,Gpt-2基于其decoder&#xff09;早已经在各类NLP任务上大放异彩&#xff0c;面对让人眼花缭乱的transformer堆叠方式&#xff0c;你是否也会感到迷茫&#xff1f;没关系&#xff0c;现在让…

LeetCode 821. 字符的最短距离

1. 题目 给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。 示例 1:输入: S "loveleetcode", C e 输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链…

pdf各种处理 PDF 的实用代码:PyPDF2、PDFMiner、pdfplumber

你不懂得安排自己的人生&#xff0c;会有很多人帮你安排&#xff0c;他们需要你做的事。 PDF文件我们经常用&#xff0c;尤其是这两个场景&#xff1a; 下载参考资料&#xff0c;如各类报告、文档 分享只读资料&#xff0c;方便传播同时保留源文件 场景和模块 所以&#xff0…

论文浅尝 - ESWC2020 | ESBM:一个面向实体摘要的评测集

本文转载自公众号&#xff1a;南大Websoft。实体摘要&#xff08;Entity Summarization&#xff09;&#xff0c;是知识图谱研究与应用中的一个关键问题。南京大学Websoft团队为此制作了一个评测集&#xff0c;称作ESBM&#xff0c;是目前可以公开获取的规模最大的评测集。这项…

Android官方开发文档Training系列课程中文版:手势处理之滚动动画及Scroller

原文地址&#xff1a;http://android.xsoftlab.net/training/gestures/scroll.html 在Android中&#xff0c;滑动经常由ScrollView类来实现。任何超出容器边界的布局都应该将自己内嵌在ScrollView中&#xff0c;以便提供可滚动的视图效果。自定义滚动只有在特定的场景下才会被…

美团在O2O场景下的广告营销

美团作为中国最大的在线本地生活服务平台&#xff0c;覆盖了餐饮、酒店、旅行、休闲娱乐、外卖配送等方方面面生活场景&#xff0c;连接了数亿用户和数百万商户。如何帮助本地商户开展在线营销&#xff0c;使得他们能快速有效地触达目标用户群体提升经营效率&#xff0c;是美团…

LeetCode 202. 快乐数(快慢指针)

1. 题目 2. 解题 一个数经过若干次各位数平方和后&#xff0c;会等于它自己使用类似环形链表的快慢指针法&#xff0c;最终快慢指针相遇&#xff0c;若不为1则是不快乐数 class Solution { public:int bitSquareSum(int n) {int sum 0, bit;while(n > 0){bit n % 10;su…

全栈深度学习第4期: 机器学习岗位区别与团队管理

一起追剧鸭简介Berkeley全栈深度学习追剧计划是由夕小瑶的卖萌屋发起的优质公开课打卡项目&#xff0c;通过微信群为同期追剧的小伙伴提供交流平台。关于该计划的详请见这里。Berkeley深度学习追剧群目前已有1000小伙伴加入&#xff0c;公众号后台回复口令 深度学习追剧 入群。…

会议交流 | DataFunCon 线上大会 - 知识图谱专题论坛

OpenKG开放知识图谱&#xff08;简称 OpenKG&#xff09;旨在促进中文知识图谱数据的开放与互联&#xff0c;促进知识图谱和语义技术的普及和广泛应用。点击阅读原文&#xff0c;进入 OpenKG 博客。

Android官方开发文档Training系列课程中文版:手势处理之多点触控处理

原文地址&#xff1a;http://android.xsoftlab.net/training/gestures/multi.html 多点触控是指多个手指同时触摸屏幕的情况。这节课主要学习如何检测多点触控手势。 记录多个触控点 当多根手指同时触碰到屏幕时&#xff0c;系统会产生以下触摸事件&#xff1a; ACTION_DOW…