安卓系统开发笔记(三)

1.去除暗黑反色问题

方法:DarkIconDispatcherImpl(applyDarkIntensity)

StatusBarIconView(onDarkChanged)

类:NotificationIconContainer(通知的管理类)

statusbar\phone\StatusBarIconController.java(TintedIconManager/onIconAdded)

1)frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

PWM开始更新SystemUI的状态,此处我们重点关注updateLightStatusBarLw函数

updateLightStatusBarLw根据最上层的窗口确认是否为Light SystemUI的,接下来看下PolicyControl.getSystemUiVisibility

2frameworks/base/services/core/java/com/android/server/policy/PolicyControl.java

在getSystemUiVisibility中又没有相关LIGHT的操作,那么有跑到了WindowState.getSystemUiVisibility中

3frameworks/base/services/core/java/com/android/server/wm/WindowState.java

此处很简单的就是获取mSystemUiVisibility,而mSystemUiVisibility最终是从哪里来的呢,那就要跳到PhoneWindow.java。

(此处跳动有点大,主要是从ViewRootImpl的relayout界面时携带的WindowManager.LayoutParams决定的)

4frameworks/base/core/java/com/android/internal/policy/PhoneWindow.java

phonewindow是作为view与activity之间的一个管理工具,创建是在activity的attach方法中,作为window的一个实现类

2.SystemUI状态栏的更新

 

Systemui接收到StatusBarManagerService对状态栏的状态的update,以及对状态栏的更新。

android:windowLightStatusBar   是否改变状态栏颜色属性

PhoneStatusBarPolicy.java这个类在初始化的时候注册了大量的监听

设置界面切换颜色

QuickStatusBarHeader:

mBatteryRemainingIcon.onDarkChanged(tintArea, intensity, fillColor);

DecorView View的底层类,涉及到statusbar   calculateStatusBarColor  winowLightStatusbar SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

<style name="Theme.Settings" parent="Theme.SettingsBase">

<style name="Theme.Settings.Home" parent="Theme.Settings.HomeBase">

左上角icon图标优化

时钟图标status_bar_battery_icon_height  时钟文字status_bar_clock_size

icon图标大小:status_bar_icon_size   status_bar_system_icon_size  

status_bar_icon_drawing_size_dark   status_bar_icon_drawing_size

文件位置:src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java  res/layout/system_icons.xml

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值