已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SystemUI简介 版本状态创建日期作者变更人修改日期备注V1.02014-4-21俞晋2014-04-21学习整理文档目录1SystemUI界面组成3TitleBar状态栏3ToolBar工具栏3StatusBarExpanded通知栏下拉时候的扩展界面4RecentsPanel面板(长按Home键显示出) 42.SystemUI代码路径及安装路径4SystemUI根目录4TitleBar目录4ToolBar目录4StatusBarExpanded目录4RecentPanel目录4SystemUI.apk安装目录43.TitleBar标题栏分析布局简介5控制各布局对应的java类54.ToolBar工具栏分析4布局简介5控制各布局对应的java类6Android 4.16Android 4.275.RecentsPanel分析9控制各布局对应的java类96.SystemUI的启动流程11启动流程117.WiFi,McWill,SIM状态的控制12接收广播的方式来获取各开关状态的变化 12titlebar状态图标的设置与移除 12titlebar状态图标的设置与移除 5一、 SystemUI界面组成首先从视沉角度面认识下SystemUI组那几部分组成,都长啥样。l TitleBar状态栏,在Android 4.1 与Android 4.2相同的l ToolBar工具栏l RecentsPanel面板(长按Home键显示出),在Android 4.1 与Android 4.2相同的二、SystemUI代码路径l SystemUI根目录frameworks/base/packages/SystemUIl TitleBar目录frameworks/base/packages/SystemUI/src/com/android/systemui/statusbarframeworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phonel ToolBar目录frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/toolbarl StatusBarExpanded目录frameworks/base/packages/SystemUI/ src/com/android/systemui/statusbarl RecentPanel目录frameworks/base/packages/SystemUI/ src/com/android/systemui/recentl SystemUI.apk安装目录安装在手机中的/system/app目录下adb push out/target/product/*/system/app/SystemUI.apk /system/app三、 titleBar 标题栏分析l 布局简介红色:notificationIcons,通知图标,比如我们常见的360以及QQ等等,都会在这里显示自己的图标;紫色:statusIcons,状态图标,这里会放置系统的一些状态图标,比如像蓝牙、闹钟、耳机插入等等;绿色:信号以及电量图标,这里主要放置了wifi以及手机信号和电池电量的图标;此处图标的动态切换是在TelephonyIcons.java中控制。黄色:clock,时钟图标; 蓝色:ticker,通知信息图标,当系统接收到通知后,有的通知具有通知信息,因此会通过ticker进行显示,比如禁用360的悬浮窗,插拔SD卡等等;l 控制各布局对应的Java类Src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java这个类对应整个titleBar。Src/com/android/systemui/statusbar/StatusBarIconView.java这个类对应titleBar上显示的单个图标,每个图标又是一个View子图,由标题图片、背景、文字、分隔图片组成。四、 ToolsBar 工具栏分析l 布局简介 Android 4.1中的布局 Android 4.2中的布局l 控制各布局对应的Java类 Android 4.11) BWConnectionSwitchPanel.java绘制以下布局, 是一个LinearLayout,id/connection_switch2) BWConfigurationSwitchPanel.java绘制以下布局,是一个LinearLayout,Id/configuration_switch3) BWConfigurationIconView.java绘制以下红框中框起来的单个布局,是一个LinearLayout,每一个红框框起来的View都是new出来的,非Inflate出来。点击事件:BWToolBarView.java中长按事件:BWToolBarView.java中4) 类关系图 Android 4.21) NotificationRawLayout.java绘制以下布局, 是一个LinearLayout, id/latestitems2) LatestItemView.java 绘制以下布局,是一个FrameLayout,id/content。这具条目的布局在framework/base/core/res/res/layout/status_bar_latest_event_content.xml和framework/base/core/res/res/layout/notification_template_base.xml中。SwipeHelper.java中控制其左右滑动BaseStatusBar.java中add和remove此View。3) QuickSettingsScrollView.java 与 QuickSettingsContainerView.java绘制以下视图,其中前者包括后者。4) QuickSettingsTileView.java绘制以下视图,是一个FrameLayout,绘制红框中的每一项。点击事件:QuickSettingsConnectionModel.java中长按事件:QuickSettings.java中5) 类关系图五、 RecentPanel 分析l 控制各布局对应的Java类。 RecentsPanelView.java 与 RecentsVerticalScrollView.java绘制以下视图,是一个ScrollView。 类关系图六、 SystemUI的启动流程 .project/frameworks/base/services/java/com/android/server/SystemServer在开机启动时就把StatusBarManagerService加入SystemManager中statusBar = new StatusBarManagerService(context, wm); ServiceManager.addService(Context.STATUS_BAR_SERVICE, statusBar); 在系统加载好后启动SystemUIService Intent intent = new Intent(); intent.setComponent(new omponentName(com.android.systemui, com.android.systemui.SystemUIService); context.startService(intent); 在SystemUIService中有四个都继承于SystemUI的类: RingtonePlayer通知铃声相关 PowerUI负责低电声音、对话框显示。 TabletStatusBar负责平板的图标显示 PhoneStatusBar负责手机的上方title栏的显示和下拉菜单的显示。七、 WiFi,McWill,SIM状态控制l 在控制类中会通过接收广播的方式来获取wifi,McWill,SIM状态,运营商,飞行模式,数据业务开关等的变化。通过MSimTelephonyManager来注册监听radio状态,数据业务上下行等的变化:int numPhones = MSimTelephonyManager.getDefault().getPhoneCount();mPhone=(MSimTelephonyManager)context.getSystemService(Context.MSIM_TELEPHONY_SERVICE);mMSimPhoneStateListener = new PhoneStateListenernumPhones;for (int i=0; i numPhones; i+) mMSimPhoneStateListeneri = getPhoneStateListener(i); mPhone.listen(mMSimPhoneStateListeneri, PhoneStateListener.LISTEN_SERVICE_STATE /servicestate的变化更新卡是否已注上网 | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS /卡信号格数的变化 | PhoneStateListener.LISTEN_CALL_STATE /打电话的状态变化 | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE /数据连接状态的变化 | PhoneStateListener.LISTEN_DATA_ACTIVITY); /数据上下行的变化 最终通过调用控制类的refreshViews(int subscription/对应的卡1与卡2)方法中的回调方法: cluster.setWifiIndicators( mWifiEnabled & (mWifiConnected | !mHasMobileDataFeature), mWifiIconId, mWifiActivityIconId, mContentDescriptionWifi);/更新wifif格数与wifi数据上下行cluster.setMobileDataIndicators( mHasMobileDataFeature, mMSimPhoneSignalIconIdsubscription, mMSimMobileActivityIconIdsubscription, mMSimDataTypeIconIdsubscription, mMSimContentDescriptionPhoneSignalsubscription, mMSimContentDescriptionDataTypesubscription, mNoMSimIconIdsubscription, subscription, mMSimServiceStatesubscription,isRoamsubscription,mMSimDataConnectedsubscription);/更新信号格数与卡数据业务上下行/最后回调到更新类MSimSignalClusterView的setWifiIndicators与setMobileDataIndicators方法来更新titilebar布局中的图标状态。l titlebar状态图标的设置与移除在SystemUI包里有个类PhoneStatusBarPolicy通过接收广播的方式来更新titlebar上方的状态图标的显示与隐藏private final StatusBarManager mService = (StatusBarManager)context.getSystemService(Context.STATUS_BAR_SERVICE);以闹铃为例,首先设置闹铃图标mService.setIcon(alarm_clock, R.drawable.stat_sys_alarm, 0, null);mService.setIconVisibility(alarm_clock, false);/初始化时时隐藏的然后根据广播获取蓝牙状态的打开与关闭来更新蓝牙图标的显示与隐藏private final void updateAlarm(Intent intent) boolean alarmSet = intent.getBooleanExtra(alarmSet, false); mService.setIconVisibility(alarm_clock, alarmSet);以上StatusBarManager会通过AIDL调用到 StatusBarManagerService相应方法中,对应StatusBarManagerService以后的流程刚才在介绍信号,wifi,数据业务更新时已经讲过,这里就略过。同时在通话中并且IcallScreen界面处于后台时Phone模块也可以通过如下调用来显示与移除相应图标private void notifySpeakerphone() if (!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国航招飞面试哪些内容
- 2025年市场营销题库4月完全版
- 中级消防设施操作员证考试题库及解析
- 2025年体育知识竞赛考试588题6O含答案
- 2025年学法用法考试复习题库含答案
- 2025年山东省聊城市中考历史真题含答案
- 卫生统计学模拟试卷三
- 信息通信网路机务员理论模拟试题(附参考答案)
- 2021年医疗结构化面试真题(更新中)
- 安全生产知识竞赛试题及答案一
- 玉米青贮技术培训资料
- 国家公务员考试申论真题副省级
- 2023-2024学年广西壮族自治区柳州市小学语文二年级期末通关考试题详细参考答案解析
- 审计模拟实训教程第4版马春静课后部分参考答案
- 疾控中心专业试题及答案
- 12123交管学法减分考试题库及答案
- GB/T 16951-1997金刚石绳索取心钻探钻具设备
- GA/T 1466.1-2018智能手机型移动警务终端第1部分:技术要求
- FZ/T 73009-2021山羊绒针织品
- 《最优化方法》研究生配套教学课件
- 非物质文化遗产概论:第二章-非遗分类-第七节传统节日类遗产课件
评论
0/150
提交评论