一.状态栏形式

1.1锁屏状态栏

锁屏状态栏是只有用户设置了锁屏方式为滑动或其他安全锁时才会显示,锁屏方式设置为“无”时不会显示,其显示是伴随着锁屏界面的,也就是只有按下power键或者自动息屏后才会显示。其显示逻辑是在NotificationPanelView来控制的

案例一:

区域1为keyguard_carrier_text

区域2为cutout_space_view

区域3为system_icons_container

主要布局文件是

frameworks\base\packages\SystemUI\res\layout\keyguard_status_bar.xml

其本身是个KeyguardStatusBarView,布局代码如下图所示:

我们这里分析下cutout_space_view这个区域,大小计算方法主要在updateLayoutParamsNoCutout中处理

案例二:

布局文件为keyguard_status_bar.xml

主要的布局信息包括左侧时钟、中间刘海区域以及右侧的系统图标及运营商区域。

KeyguardStatusBarView    updateVisibilities()

默认值为false,且查看赋值也全设置为false所以不显示多用户图标

1.2解锁状态栏

用户通过解锁之后进入主界面下的状态栏,其布局展示如下:

案例一:

布局文件为:status_bar.xml

在最左侧预留了运营商信息空间,之后放置时钟控件信息,之后放置通知图标,右侧放置系统图标信息。

这里通知显示有两种布局,一种是左侧显示,一种是中间显示,默认情况下使用左侧显示通知,另一种情况是,将刘海隐藏显示中间的通知,代码展示如下:

案例二:

主要布局是frameworks\base\packages\SystemUI\res\layout\status_bar.xml,其本身是

个PhoneStatusBarView,布局代码如下。

1.3 下拉状态栏

该状态为用户通过解锁之后进入主界面下,在下拉通知栏显示的状态栏,显示布局如下:

案例一:

该布局主要包含了三大模块,首先是顶部显示时钟信息的布局,之后是显示日期、系统图标、电量的布局,再之后是显示快捷设置的一些按钮,这里主要是对前两块进行分析。

其布局文件包括:quick_status_bar_expanded_header.xml

上侧时钟布局文件: quick_status_bar_header_system_icons.xm

之后date布局文件:quick_qs_status_icons.xml

其父布局为qs_panel.xml,其中qs_panel.xml的父布局为status_bar_expanded.xml 与锁屏状态下一致

案例二:

其由frameworks\base\packages\SystemUI\res\layout\quick_status_bar_header_system_icons.xml和frameworks\base\packages\SystemUI\res\layout\quick_qs_status_icons.xml两个布局文件构成,其中引用的quick_status_bar_header_system_icons是顶部显示时钟和电池的布局, quick_qs_status_icons为日期和系统图标显示的布局,这两个布局都是由frameworks\base\packages\SystemUI\src\com\android\systemui\qs\QuickStatusBarHeader.java来控制。

二.状态栏加载流程

其启动加载流程如下:

前面的工作都是为了启动SystemUI这个进程,具体的布局加载都在StatusBar这个类中实现。

通过启动start方法,在这个方法中调用了createAndWindows(),主要是在这个方法中实现对视图的处理。

之后进入makeStatusBarView这个方法,在这个方法中调用了inflateStatusBarWindow()

加载了各种状态栏布局的父布局,并在NotificationPanelViewController对锁屏状态栏的视图做了处理,

之后在makeStatusBarView方法中加载qs_panel视图,也就是解锁下拉通知栏的状态栏布局

之后加载Status_bar视图

在这里已经把所有关于通知栏视图加载完成,在之前介绍过这之后进行显示视图,通过WindowManager的addView方法显示。

SystemUI状态栏形式及流程相关推荐

  1. Android10 SystemUI状态栏网络图标流程分析

    Android 10 SystemUI网络图标刷新与显示 涉及文件目录: android/frameworks/base/packages/SystemUI/src/com/android/syste ...

  2. Android SystemUI 状态栏网络图标显示分析(Android 11)

    最近看了一个wifi, ethernet切换,状态栏图表显示的问题.记录一下追踪由于网络状态变化,SystemUI 状态栏网络图标显示的流程. 先看一下SystemUI这边: /frameworks/ ...

  3. Android 10.0 SystemUI状态栏显示和隐藏自定义图标

    目录 1.概述 2.SystemUI状态栏显示和隐藏自定义图标的相关功能代码

  4. Android 12.0 SystemUI状态栏屏蔽掉通知栏不显示通知

    目录 1.概述 2.SystemUI状态栏屏蔽掉通知栏不显示通知的核心类

  5. SystemUi状态栏客制化功能和常见问题分析

    一.多图标成点 当系统图标区域或者通知图标区域图标过多,而区域不够时,就会将多余的图标隐藏,并显示一个点,如下图所示. 介绍此功能之前先看一下图标的初始化过程,从中可以看到有个config_statu ...

  6. Android 9.0系统源码_SystemUI(二)StatusBar系统状态栏的创建流程

    前言 上一篇我们具体分析了SystemUI的启动流程,在SystemServer的startOtherServices方法中,会启动SystemUIService服务,SystemUIService服 ...

  7. SystemUI 状态栏增加移动数据开启图标

    原生设计中,移动数据图标只有在网络活动(下载/上传)时,才显示相应的小白色三角图标,如果没有网络活动则没有任何显示.需要在不活动时也显示灰色的三角图标. 系统导航栏中常见信号图标包括:SIM卡信号(移 ...

  8. systemui状态栏添加新图标

    状态栏右侧添加新图标 需求描述 在状态栏右边添加一个自定义图标,根据广播更新图标. 代码实现 framework部分修改 frameworks/base/core/res/res/values/con ...

  9. SystemUi状态栏主要控件

    一.运营商信息控件 运营商的控件有两个,一个是锁屏下显示的CarrierText,一个是解锁下显示的OperatorNameView.解锁状态下的OperatorNameView默认显示为空,只有当插 ...

最新文章

  1. SAP有用的NOTE(持续更新)
  2. golang源码分析:编译过程词法解析的流程
  3. linux 多线程编程笔记
  4. 牛客-无形的博弈【结论题,快速幂】
  5. 前端设定项目奖金有多少_【系列二】建筑工程项目激励模式探讨
  6. java insert方法_【Oracle/Java】以Insert ALL方式向表中插入百万条记录,耗时9分17秒...
  7. Jenkins的安装配置
  8. SourceTree 教程文档(进阶知识)
  9. 常见基本题型:进制的转换
  10. 基于python的图书管理系统设计与实现论文_基于JAVA的图书馆管理系统设计[毕业论文_].doc...
  11. 1024shop 各个微服务 UML时序图
  12. 朱有鹏嵌入式linux网盘,朱有鹏嵌入式单片机免费课程
  13. JavaScript 身份证验证
  14. wps如何设置表格中文字的行间距
  15. 怎样使PPT自动播放
  16. vue调倍速后声音变了_pr加速人声后声音变调失真怎么办?
  17. 服务器文档链接电脑,服务器怎么链接电脑
  18. 你有“隐私泄露担忧”吗?适合普通用户的6个方法来了
  19. Tetris game编程过程
  20. 布尔教育php分享视频,布尔教育jQuery实战视频资料分享

热门文章

  1. HTML/CSS: 浅谈a标签及伪类选择器
  2. oracle视图无故消失,oracle数据库视图无效
  3. 波士顿房价分析作业总结
  4. 计算机弹奏蔡徐坤,用了多年键盘才发现,CTRL键跟蔡徐坤有关,细思极恐!
  5. FatMouse的奶酪
  6. vue使用font-icon
  7. NLP-分类模型:短文本分类概述【FastText、TextCNN、TextRNN、TextRCNN、DPCNN】
  8. ThinkPHP5实现极验滑动验证码geetest功能
  9. android sdk 9.0下载地址,Android9.0对非 SDK 接口的限制
  10. 微型计算机实验仪,微机万能试验机