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

简介: 原文地址:http://android.xsoftlab.net/training/system-ui/status.html这节课将会介绍如何隐藏不同的版本的状态条。隐藏状态条可以使内容展示区域更大,因此可以提供一种更强的身临其境的用户体验。

原文地址: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 {
    @Override
    protected 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即可。

目录
相关文章
|
缓存 算法 网络协议
Android面试回忆录移动应用开发专业核心课程
Android面试回忆录移动应用开发专业核心课程
|
数据处理 API Android开发
安卓应用开发:构建一个高效的通知管理系统
【5月更文挑战第25天】在移动操作系统中,通知管理是用户体验的核心组成部分。特别是对于安卓设备,由于其开放性和多样性,有效的通知管理系统显得尤为重要。本文将详细介绍如何在安卓平台上构建一个高效、用户友好的通知管理系统。我们将从通知渠道的管理、用户自定义设置以及后台数据处理等方面展开讨论,并提供实用的代码示例和最佳实践建议。
|
设计模式 API Android开发
探索Android应用开发:构建一个高效的通知管理系统
【5月更文挑战第27天】在移动应用的海洋中,通知管理是用户体验的舵手。本文将深入探讨如何在Android平台上构建一个既高效又用户友好的通知系统。我们将通过分析Android通知渠道的工作原理,设计模式的选择,以及最新的API特性,来揭示如何优化应用的通知策略。文章的目标是为开发者提供实用的技术指导和最佳实践,帮助他们创建出能够在信息洪流中脱颖而出的通知体验。
|
搜索推荐 API Android开发
Android应用开发:打造高效的通知管理系统
【5月更文挑战第27天】随着移动设备在日常生活中的普及,用户对应用程序提供的信息通知越来越关注。一个高效、智能且不干扰用户的通知管理系统对于提升用户体验至关重要。本文将探讨如何在安卓平台上实现一个优化的通知管理方案,包括通知渠道的设置、消息的优先级划分以及用户交互行为的分析与反馈。通过这些技术手段,我们可以确保用户在接收重要信息的同时,避免被无关通知打扰。
|
机器学习/深度学习 算法 Android开发
安卓应用开发:打造高效通知管理系统
【5月更文挑战第6天】 在现代移动应用的海洋中,用户经常面临信息过载的挑战。一个精心设计的通知管理系统对于提升用户体验至关重要。本文将探讨在安卓平台上如何实现一个高效的通知管理系统,包括最佳实践、系统架构设计以及性能优化技巧。通过分析安卓通知渠道和优先级设置,我们的目标是帮助开发者构建出既能吸引用户注意,又不会引发干扰的智能通知系统。
167 2
|
Java 开发工具 Android开发
Android Studio 导出JavaDoc文档
Android Studio 导出JavaDoc文档
421 0
|
JavaScript Java 测试技术
基于Android的居家养老管理系统
基于Android的居家养老管理系统
84 0
|
机器学习/深度学习 算法 Android开发
安卓应用开发:打造高效通知管理系统
【5月更文挑战第31天】在移动应用的海洋中,用户经常被各种推送通知所困扰。一个精心设计的通知管理系统对于提升用户体验至关重要。本文将探讨如何在安卓平台上开发一个高效的通知管理系统,包括系统设计原则、实现机制以及性能优化策略,旨在为开发者提供一套可行的解决方案,以减少用户干扰并提高应用的用户留存率。
|
搜索推荐 Android开发 开发者
安卓应用开发:打造高效通知管理系统
【5月更文挑战第30天】在移动应用的世界中,通知管理是提升用户体验的关键。本文将深入探讨如何在安卓平台上实现一个高效、用户友好的通知管理系统。我们将分析安卓通知渠道的优势,探索定制化通知的设计理念,并提供实用的编程技巧以优化通知的显示和用户交互。通过实例和代码片段,读者将学习如何有效地利用安卓系统服务来创建静默但强大的后台通知逻辑,从而在维持用户参与度的同时避免打扰用户。
123 0
|
搜索推荐 API Android开发
安卓应用开发:打造高效通知管理系统
【5月更文挑战第20天】在移动设备中,通知管理是用户体验的关键部分。一个高效的通知系统不仅能够及时传达重要信息,还能避免用户感到不必要的干扰。本文将深入探讨如何在安卓平台上开发一个高效的通知管理系统,包括通知的设计、发送策略以及用户的个性化设置。通过分析安卓系统的通知机制和最新的API特性,我们将提供一个实用的开发指南,帮助开发者创建更加智能和用户友好的通知体验。