杀鸡焉用牛刀 发表于 2024-6-15 02:28:56

Android14 SystemUI修复进入桌面后假造按键图标从玄色过渡到白色

前言:

在Android14体系rom产品开辟中,一些SystemUI的体系定制化开辟,在对设备进入桌面后出现假造按键图标颜色从淡色系(玄色)过渡到深色系(白色),通常进入桌面会复现这种情况,这并不是我们好兄弟想要看到的。
(注:假造按键深色系是图标为白色高亮,淡色系是图标为玄色)
缘故原由分析:

       此情景是由于Android14 SystemUI 的锁屏页面添加了假造按键,而且通过代码分析,此处假造按键默认主题与Lancher3内里的抽屉主题相一致,即体系主题,都为淡色系。然而我们桌面的假造按键主题为深色系,进而导致我们好兄弟解锁进入桌面时出现桌面假造按键图标会从玄色过渡到白色。
        经过测试,我们在设置里进入显示(Display),通过设置深色主题(Dark theme),此时Launcher3抽屉变成深色主题,假造按键图标为白色高亮,锁屏页面假造按键也为深色主题,图标为白色高亮。再次解锁进入桌面则不会复现假造按键图标颜色从玄色过渡到白色。
        我只想出两种修改方法,当然我的好兄弟有千百种想法,只是不想去实现罢了,以是在此我为好兄弟实现一下。
1.修改StatusBarKeyguardViewManager.java,只需解释几行代码即可办理

/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java  2.修改锁屏界面主题为深色主题,与桌面主题相一致就行,不过这么修改的缺陷就是锁屏界面的主题将被写死,之后要是有相干的修改会造成一定的辩论,还是不太保举好兄弟去实现的。以是我就不实现了,你们就看第一种方法就行,简单易懂好实现。

办理方案:

1.修改StatusBarKeyguardViewManager.java内里的onStartedWakingUp(),这段代码的主要功能是在叫醒过程中,启用通知阴影的动画,并在导航栏中实行一个淡入动画。如许的动画效果可以提供更好的用户体验,使得导航栏的出现更加自然和流畅。同时,启用通知阴影的动画也能更好地引起用户的留意,提高用户体验。我们只需解释掉其中对导航栏的全部视图实行淡入动画即可。

源码:
https://img-blog.csdnimg.cn/direct/c8b5b5a984a343948cd936e96549ad49.png
修改后: 
https://img-blog.csdnimg.cn/direct/7ec71c06929a4e8d9e95f62e842f4a8e.png
2. 修改StatusBarKeyguardViewManager.java内里的onStartedGoingToSleep(),这段代码的主要功能是在休眠前禁用通知阴影的动画,并在导航栏中实行一个淡出动画。如许的动画效果可以提供更好的用户体验,使得导航栏的消失更加自然和流畅。同时,禁用通知阴影的动画也能避免在休眠过程中产生不必要的动画效果,提高用户体验。同上,我们只需要解释掉其中对导航栏的全部视图实行淡入动画即可。

源码:
https://img-blog.csdnimg.cn/direct/3757577c6ea541ecb2d4c50c74c7f672.png
修改后:
https://img-blog.csdnimg.cn/direct/6c8682ca7d4845c7832060aea0b62bf2.png
3. 修改StatusBarKeyguardViewManager.java的mMakeNavigationBarVisibleRunnable里的run()方法。这段代码的主要功能是在背景线程中实行一个任务,将导航栏可见。如许的设计可以避免在主线程中实行这个任务,避免阻塞主线程,从而提高应用步调的性能和响应能力。同时,将导航栏显示出来也能提供更好的用户体验,使得用户可以或许更好地使用应用步调。只需解释掉run内里实现的代码。

源码:
https://img-blog.csdnimg.cn/direct/161e39e1703844ae89ece5b5f7bb0084.png
修改后:
https://img-blog.csdnimg.cn/direct/559883c45c2d4edaa34f4e0774c821d3.png
4. 修改StatusBarKeyguardViewManager.java里的updateNavigationBarVisibility()。这段代码主要用于更新导航栏的可见性,当 navBarVisible 为 true 时,将导航栏显示出来,当 navBarVisible 为 false 时,将导航栏隐蔽。同时,这段代码还考虑了在显示导航栏时的延迟时间,以及在隐蔽导航栏时的移除已经安排在队列中的任务,提高了应用步调的性能和可靠性。其实说到末了,我们的目的就是要把导航栏隐蔽,这里也是最关键一处修改,保留导航隐蔽的代码即可。

源码:
https://img-blog.csdnimg.cn/direct/7ebaceb0954f439daaf48f3bd32259b0.png
  修改后:
https://img-blog.csdnimg.cn/direct/580471836f9447c9b63dde32b911fe53.png


总结:

       按上面一步一步的修改即可修复好假造按键的bug,只不过看个人需求去,好兄弟你要是有更好实现方法也可以在批评区发出自己的见解。

       末了,这里是来自至大学到工作练习两年半的个人代码生,我喜欢摸鱼,带薪拉屎,写bug。制作不易,接待各位的借鉴。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Android14 SystemUI修复进入桌面后假造按键图标从玄色过渡到白色