专栏首页代码GG之家Scoops android app多主题架构(三)

Scoops android app多主题架构(三)

白天夜间主题

  • 很多应用都有这个功能,可以选择白天和夜间模式,给用户更好的体验。为此,系统也提供了一种机制,来实现此功能。
  • 模式主要分为四种 夜间 白天 跟随系统 和自动。具体实现可以去看com.android.support:appcompat-v7:23.0.0源码

夜间和白天模式很好理解。自动就是根据时间判断是否为白天和夜间,自动选择对应主题。 跟随系统则使用系统的值,依赖系统。

实现原理

通过两组主题,分别放在values和values-night下面,系统根据你设置的模式,对应的去找主题配置值,然后设置上去即可。

使用说明

  • 不使用Scoops

1自定义一个属性Attrs.xml

这里可以看到定义了两个属性textColor和textSize 格式分别为color和dimension

2创建一个目录values-night

3在values和values-night下面新建一个文件themes.xml,同时配置相同的主题,加入我们自定义的属性textColor,给它配置值。

values下的属性

values-night下的属性

4使用的地方

这里mMode的值可以取以下几个

MODE_NIGHT_FOLLOW_SYSTEM MODE_NIGHT_YES MODE_NIGHT_NO MODE_NIGHT_AUTO

5我们配置下使用的地方

这里的 android:textColor=”?attr/textColor” 记住用的是?attr来使用自定义的属性

6具体的结果,看Primary Color颜色变化

7代码地址: https://github.com/luxiaoming/ScoopsDemo

本文分享自微信公众号 - 代码GG之家(code_gg_home),作者:陆晓明

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Scoops android app多主题架构(二)

    简要说明 通过注释方式,完成多主题的效果更换。可以减少一些代码,使得代码更清晰一些。 ? 使用说明 1 首先写一个注释类 ? 2 在MainApp 初始化的时候...

    用户1263308
  • android常用接口(二)

    =图片========================== bitmap转Byte数组(微信分享就需要用到) public byte[] bmpToByteAr...

    用户1263308
  • 封装之路(四) BaseFragment BaseViewModel BaseModel

    框架实时变更,一直在调整,也是自己的实践过程,继续奋斗了。估计大家对实现没啥兴趣,这节结束,后面直接去github地址看更新了,就不再开贴说了。当这个框架完成时...

    用户1263308
  • 比起商汤IPO,我们更关心那1亿美金和C轮融资的背后大料

    昨日(11月23日),营长的朋友圈被《商汤科技计划IPO 并将在美设立研发中心》刷屏了。甚至有媒体曝“商汤科技最早明年进行IPO”。 这条新闻最早由路透社爆出来...

    AI科技大本营
  • 给无人车装上方向盘和刹车踏板:谷歌的妥协还是另有”阴谋“?

    从2009年开始研发和测试,谷歌的无人驾驶汽车项目已经走过了7个年头,眼见原来一直坚持的完全无人驾驶由于受到技术、法规等限制,商业化还有很长的路要走,谷歌终于...

    机器人网
  • 干货 | MSSQL 注入攻击与防御

    本文所用数据库涉及SQL Server 2k5,2k8,2k12,其次对于绕过姿势和前文并无太大差别,就不做过多的讲解,主要放在后面的提权上

    HACK学习
  • TensorFlow 1.x最后一更、Android 10最新特性,这是谷歌开发者日

    2019 谷歌开发者大会于 9 月 10 日和 11 日在上海举办,大会将分享众多开发经验与工具。在第一天的 KeyNote 中,谷歌发布了很多开发工具新特性,...

    机器之心
  • 每周分享第一期

    这里记录我过去一周看到的新闻、故事、技术、资料等等,分享给各位。同时也欢迎各位投稿,投稿地址zhenhai.gl@gmail.com。

    小一
  • 玩转区块链:如何实现一个简单的以太坊

    内容来源:2018 年 07 月 14 日,秘猿科技区块链工程师蒋金洋在“开发者的以太坊入门指南”中,进行的《如何实现一个简单的以太坊》演讲分享。IT 大咖说(...

    IT大咖说
  • 网卡收到一个数据包的时候,是如何传给应用层的(上)

    这里以3c501网卡为例,每个设备对应一个device的结构体,下面代码即对3c501网卡的数据结构进行初始化,包括发送函数,注册中断回调,mac头长度等。

    theanarkh

扫码关注云+社区

领取腾讯云代金券