美文网首页systemui
SystemUI.StatusBar交接文档

SystemUI.StatusBar交接文档

作者: jinjindanding | 来源:发表于2018-09-10 11:06 被阅读0次

    Gree Statusbar构成:

    Statusbar.png

    状态栏加载流程
    SystemUIService ->BaseStatusBar.statr()->PhoneStatusBar.start()-->PhoneStatusBar.makeStatusBar();

    状态各部件
    SignalClusterView:信号塔,包括wifi,数据流量,VPN等有关信号的布局,最复杂的一个;
    NotificationOverflowContainer:通知区域,显示通知的地方;
    SystemIconAera:系统图标,负责蓝牙,耳机,闹钟,GPS等系统图标的显示地点;
    BatteryLevelTextView:电量百分比
    Clock:时钟

    各部件原理及流程:

    Clock:
    对应文件:E:\SystemUI\src\com\android\systemui\statusbar\policy\Clock.java
    原理:自定义TextVIew,依靠接收系统广播Intent.ACTION_TIME_TICK实现时间变化。

    BatteryLevelTextView:
    对应文件:E:\SystemUI\src\com\android\systemui\BatteryLevelTextView.java
    原理:实现接口BatteryController.BatteryStateChangeCallback来改变电量,BatteryControllerImpl实现该接口,原理世界收系统时间变化广播Intent.ACTION_BATTERY_CHANGED来监听电量变化;

    SystemIconAera
    StatusBarIconController:负责状态栏区域的显示与隐藏:E:\SystemUI\src\com\android\systemui\statusbar\phone\StatusBarIconController.java

    PhoneStatusBarPolicy:负责此部分的绝大多数图标的逻辑
    E:\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBarPolicy.java
    在注册函数中会监听各种广播:
    包括:
    TTY status;TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED
    Alarm clock:闹钟 AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED
    zen:勿扰模式/volume:音量AudioManager.RINGER_MODE_CHANGED_ACTION``AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION
    hotspot:热点;HotspotController.Callback()实现在HotspotControllerImpl
    nfc:NFC NfcAdapter.ACTION_ADAPTER_STATE_CHANGED
    earphone:AudioManager.ACTION_HEADSET_PLUG
    dateSaver: 实现接口DataSaverController.Listener来改变状态
    bluetooth:蓝牙,同时实现接口BluetoothController.Callback()来改变状态,监听蓝牙变化实现在BluetoothControllerImpl

    NotificationOverflowContainer:
    NotificationIconAreaController:通知区域控制;
    E:\SystemUI\src\com\android\systemui\statusbar\phone\NotificationIconAreaController.java
    通知来自于NotificationData,然后会排序再查重后显示出来;
    IconMerger:当图标大于一定数量和会显示省略号的地方
    E:\SystemUI\src\com\android\systemui\statusbar\phone\IconMerger.java

    SignalClusterView:

    NetworkControllerImpl.png

    NetworkControllerImpl:
    E:\SystemUI\src\com\android\systemui\statusbar\policy\NetworkControllerImpl.java
    实现信号变化监听的地方,主要数据来自于系统广播;流程复杂;

    SignalClusterView:
    信号塔部分;E:\SystemUI\src\com\android\systemui\statusbar\SignalClusterView.java
    状态栏信号布局,通过各种回调然后apply到phoneStates中改变,主要的修改点都在此处;
    WifiIcons/TelephonyIcons 替换状态信号图标的位置
    signal_cluster_view.xml/mobile_signal_group.xml 图标布局文件,修改此处修改图标显示
    status_bar.xml 总布局位置,HD图标在此处添加还有通话状态等;

    其他部分修改:
    BatteryMeterDrawable:充电图标的drawable,重写onDraw实现充电效果;
    TrafficStatsView:移动入库网速显示的实现;
    StatusbarCarrierText:联通入库双行运营商实现
    StorageNotification: OTG连接通知改变;

    NavigationBar:导航栏的显示与隐藏流程:
    显示是由外部调用到内部

    导航栏的显示与隐藏.png

    隐藏是内部 removeNavigationBar() ->mWindowManager.removeView(mNavigationBarView);实现;

    相关文章

      网友评论

        本文标题:SystemUI.StatusBar交接文档

        本文链接:https://www.haomeiwen.com/subject/rnmjgftx.html