systemUI主要分为五个部分statusBar 状态栏,NavigationBar 导航栏,Notification Panel 通知栏,Recents 近期任务界面,Keyguard 锁屏界面

systemUI属于Android framework的一部分,这也就意味着,systemUI在正常情况下是不可能被替换的

systemUI的源码目录在/framework/base/packages/SystemUI/ apk路径在/system/priv-app/SystemUI/

systemUI主要分为11个子模块

1.StatusBar:通知消息提示和状态展现
2.NavigationBar:返回,HOME,Recent
3.KeyGuard:锁屏模块可以看做单独的应用,提供基本的手机个人隐私保护
4.Recents:近期应用管理,以堆叠栈的形式展现。
5.Notification Panel:展示系统或应用通知内容。提供快速系统设置开关。
6.VolumeUI:来用展示或控制音量的变化:媒体音量、铃声音量与闹钟音量
7.截屏界面:长按电源键+音量下键后截屏,用以展示截取的屏幕照片/内容
8.PowerUI:主要处理和Power相关的事件,比如省电模式切换、电池电量变化和开关屏事件等。
9.RingtonePlayer:铃声播放
10.StackDivider:控制管理分屏
11.PipUI:提供对于画中画模式的管理

statusBar 从结构上来讲下拉菜单和状态栏都是属于statusbar                                                            他的入口是从 start()开始,主要是绑定各种服务,创建StatusBar :createAndAddWindows() ,并且做一些初始化值。                                                                   到CollapsedStatusBarFragment才算状态栏的开始,在onCreateView中加载status_bar 其中 根view:StatusBarWindowView 这个是一个继承Frame Layout的view。所以能比较初步的知道这个子view的界面加载流程                                                                                                status_bar_contents 这个Linear Layout 里面包含了 status_bar_left_side 从名字来看就知道是状态栏的左边部分,这个状态栏左边包含了时钟 clock 和短信通知 notification_icon_area              system_icon_area 这个LinearLayout 包含了 system_icons 是状态栏的右边部分,里边包含了电视图标和系统状态图标   NotificationIconAreaController 这个类主要是用于短信icon得控制类

PhoneStatusBarPolicy 这个类主要是负责statusIcon的添加和更新,是statusIcon初始化和更新的核心类

StatusBarIconContrllerImpl 是 StatusBarIconController 实现类,提供对IconGroup(即IconManager)的管理

StatusBarIconList 是 StatusBarIconControllerImpl 的父类,保存所有 Status Icon 的 Slot 和对应的Icon

IconManager 负责和View打交道。仔细的同学,应该记得StatusIcon罪恶一生开始地方那两行代码,有DarkIconManager,并将view传入了DarkIconManager

NavigationBar导航栏导航栏的容器为NavigationBarInflaterView,继承自FrameLayout

Keyguard并没有被编译成一个APK文件,而是被编译成了一个Java静态库 依赖于SystemUI而存在的

RecentsActivity.java 中的布局文件 使用了一个自定义的控件recents(RecentsView)

mStackActionButton即全部清除按钮,mEmptyView 即当TaskStack(Task的集合) 数量为空时显示的TextView,因此我们平时见到的APP的任务管理应该是在TaskStackView中的

Notification Panel下拉栏  status_bar_expanded.xml下拉栏的布局 三个重要的布局  1.@layout/keyguard_status_view 这个是锁屏界面的View                                     2.@+id/qs_frame  QS快捷面板                                                               3.@+id/notification_stack_scroller短信通知栏                                                                               在StatusBar有如下这段代码,这样@+id/qs_frame的界面的控制就被转移到QSFragment,相应的layout也就变成了qs_panel

1.@+id/quick_settings_panel 这个就是快捷面板容器,布局风格对应我们开篇说的第一幅图。2.@layout/quick_status_bar_expanded_header  这个layout也包含了一个快捷面板

上面有一行((QSFragment)qs).setHost(qsh)                  

systemUI 学习记录1相关推荐

  1. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  2. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  3. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis

    本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...

  4. 【Cmake】Cmake学习记录

    Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...

  5. ASP.NETCore学习记录(一)

    ASP.NETCore学习记录(一) asp.net core介绍  Startup.cs  ConfigureServices  Configure  0. ASP.NETCore 介绍 ASP.N ...

  6. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  7. add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX

    Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...

  8. java之字符串学习记录

    java之字符串学习记录 public class StringDemo { public static void main(String[] args) { //静态初始化字符串 String s1 ...

  9. Redis的学习记录

    Redis的学习记录 1.先导了解 1.1 NOSQL概述 1.1.1 为什么要用NoSql? 1.1.2 NoSql了解 1.1.3 NoSql特点 1.1.4 NoSQL的四大分类 2. Redi ...

最新文章

  1. 腾讯天幕——联动生态,共享安全
  2. html是大部分计算机都可以理解的语言,关于胃的静脉回流,哪项错误()。A、胃左静脉汇入门静脉或脾静脉B、胃右静脉汇入门静脉主干C、胃短...
  3. 干粉灭火器(泡沫灭火器)工作原理
  4. 中国物联网潜力巨大 还需加快投资节奏
  5. POJ训练计划3096_Surprising Strings(STL/map)
  6. android中的progressbar,Android中ProgressBar用法简单实例
  7. PayPal注册和认证说明,招商银行信用卡和牡丹国际借记卡
  8. linux pvs命令安装,使用linux的pvs命令格式化输出物理卷信息报表
  9. R语言——ggplot2的绘图逻辑
  10. 裸 VSCode 必备插件
  11. MySQL导入数据导致C盘空间不足
  12. 你不知道的浏览器页面渲染机制
  13. Windows10 SVG转PDF
  14. 手机查看正在运行的服务
  15. 解除BitLocker加密
  16. chrome 下使用维基百科
  17. PHP之微信头像加水印
  18. Android开发设置软键盘收索键
  19. spring boot配置阿里云maven库
  20. 炉石传说无法登录服务器未响应是什么意思,炉石传说:你还在卡大门无法登陆游戏吗?这些方法也许能帮到你...

热门文章

  1. Linux的系统操作界面
  2. 浅谈AI模型的可解释性、安全性与正义性(中)
  3. Python新手入门英文
  4. 微信小程序--图片懒加载
  5. 【oracle】查看oracle客户端版本和位数
  6. TextField及富文本框的用法
  7. 淘宝百亿补贴的发展及日后玩法应对策略[淘宝子评价查询接口]
  8. java 实现输出水仙花数
  9. 高光谱图像压缩方法综述
  10. GRBL四:GRBL框架解析(转载)