魔趣论坛

 找回密码
 注册账号
通过您的新浪微博帐号登录
QQ登录
查看: 29372|回复: 62

[知识百科] 说说状态栏变色在Android 4.4和5.0以上的实现原理和优缺点。

[复制链接]
本帖由 martincz 同步到 马丁龙猪 的微博!
  • TA的每日心情
    奋斗
    2017-6-28 20:44
  • 签到天数: 1303 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-5-9 13:35:31 | 显示全部楼层 |阅读模式
    大家或许都注意到魔趣5.0开始,有的软件可以支持状态栏变色,有的则不行。
    说起这个就不得不讲讲这其中的原因所在了。

    在Android 4.4上,因为Android原生没有状态栏变色的功能。
    所以开发者们自己写代码实现了这一功能(ROM自带和Xposed都是下面讲的逻辑)。
    它的主要原理是在软件界面发生变化的同时,实时去获取状态栏顶部的颜色,然后将颜色设置给状态栏。
    这样做可以不修改任何软件的情况下,首先所有软件的状态栏变色。
    但是也有个坏处,就是会增加CPU的负担、占用内存、增加耗电。
    而且如果一个软件的顶部不是纯色,比如是各种颜色组成的。
    那么它就瞎了,因为它只认顶部某个点的颜色。

    而Android 5.0上,因为Android原生支持了这一功能,提供了标准接口。
    所以程序的开发人员只需要在开发时去做定义,就可以支持状态栏变色。

    1. <resources>
    2.   <!-- inherit from the material theme -->
    3.   <style name="AppTheme" parent="android:Theme.Material">
    4.     <!-- Main theme colors -->
    5.     <!--   your app branding color for the app bar -->
    6.     <item name="android:colorPrimary">@color/primary</item>
    7.     <!--   darker variant for the status bar and contextual app bars -->
    8.     <item name="android:colorPrimaryDark">@color/primary_dark</item>
    9.     <!--   theme UI controls like checkboxes and text fields -->
    10.     <item name="android:colorAccent">@color/accent</item>
    11.   </style>
    12. </resources>
    复制代码

    相比4.4的方式,这种方式对性能、耗电几乎没有任何影响了。
    但缺点就是需要软件开发商基于Android 5.0以上的开发工具包做开发,并自行配置。
    鉴于历史是不断发展的,Android程序也会不断的更新,我们就再也没有加入4.4的功能逻辑。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册账号  

    x
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-9 13:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    升级   34%

    发表于 2015-5-9 13:37:44 来自移动版 | 显示全部楼层
    顶。。。。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-4-17 12:02
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    升级   12%

    发表于 2015-5-9 13:43:13 来自移动版 | 显示全部楼层
    顶!!…
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-18 11:28
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    升级   79%

    发表于 2015-5-9 13:47:00 来自移动版 | 显示全部楼层
    顶!!!!………
    回复 支持 反对

    使用道具 举报

    承诺♀茧茧 该用户已被删除
    发表于 2015-5-9 13:47:28 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-9-5 07:43
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2015-5-9 13:49:15 | 显示全部楼层
    一直不明白在5.0可以变色的到4.4不行了
    ----------本评论来自新浪微博:思想警察
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-9-5 07:43
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2015-5-9 13:49:15 | 显示全部楼层
    [拜拜]在应用程序还没更新的时候你就不能加上状态栏变色?没有自带的变色各种难看
    ----------本评论来自新浪微博:灰色阳光地带
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-9-5 07:43
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2015-5-9 13:49:15 | 显示全部楼层
    4.4好像就有这个接口了啊。
    ----------本评论来自新浪微博:binbinzhishao
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-9-5 07:43
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2015-5-9 13:49:15 | 显示全部楼层
    原来如此
    ----------本评论来自新浪微博:月薪
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-9-5 07:43
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2015-5-9 13:49:15 | 显示全部楼层
    感觉怪怪的
    ----------本评论来自新浪微博:护城河里读史记
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册账号  

    本版积分规则

    手机版|魔趣论坛 |

    我们旨在提供一个良好的手机玩家技术交流、资源分享社区,如果有涉及版权的资源,请联系管理员并提供相应的版权证明,我们会进行相应处理。

    GMT+8, 2017-9-23 01:07 , Processed in 0.109371 second(s), 50 queries , Gzip On, Redis On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表