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

Scoops android app多主题架构(二)

简要说明

通过注释方式,完成多主题的效果更换。可以减少一些代码,使得代码更清晰一些。

使用说明

1 首先写一个注释类

2 在MainApp

初始化的时候,将注释通过addToppings方式设置进去

3 在MainActivity

使用注释@BindToppingStatus 标记下状态栏的颜色跟随 使用注释@BindTopping 标记下某个控件的颜色跟随 @BindTopping标记里面还可以有参数 1 value对应Toppings里面的某个值 2 adapter 跟上一个适配器,主要是为了实现某些控件自定义的设置颜色方案 3 interpolator 可以配置颜色切换过程效果,比如AccelerateInterpolator.class 具体效果如下 代码可以看到还有一个注释,叫 @BindView(R.id.fab) 这个就是之前讲的Butter Knife ,不了解的可以在文章末尾看到地址

4使用

在ButterKnife.bind(this);绑定了界面view后,使用 Scoop.sugarCone().bind(this);将view ,适配器和动画切换效果设置进来 在需要更新颜色的地方,使用Scoop.sugarCone().update即可,参数为第一个值为更新的注释类型,比如Toppings.PRIMARY_DARK 参数二为颜色值。

5 ColorAdapter适配器

如果需要自己自定义主题更换后的view颜色变换动作(主要是有时候不符合我们的需求,比如我们想动态改文本颜色,高亮色等),我们就需要自定义一个实现ColorAdapter的类,比如ButtonColorAdapter接口 ColorAdapter定义了两个方法 设置新的颜色值 void applyColor(T view, @ColorInt int color); 获取当前颜色值 int getColor(T view);

6 主题bug

1 使用 @BindTopping 注释的时候,必须加上adapter=XXX.class 如果用默认的 ,请加上adapter = DefaultColorAdapter.class 2 默认的设置ScoopSettingsActivity界面,当设置为默认主题的时候,会出现bug。原因是这个界面指定了主题android:theme=”@style/Theme.AppCompat.Light” 如果我们默认的界面指定的跟这个不一样,则这个设置界面则会在默认主题的时候出错,和设置的效果不一致。解决方案:自己写一个设置界面呗。

7 demo地址

https://github.com/luxiaoming/ScoopsDemo

Butter Knife 注释编程阅读地址:

http://mp.weixin.qq.com/s?__biz=MzI1MjMyOTU2Ng==&mid=2247483660&idx=1&sn=9fc37fdb8f84763896b2696c03070db0&scene=4#wechat_redirect

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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    白天夜间主题 很多应用都有这个功能,可以选择白天和夜间模式,给用户更好的体验。为此,系统也提供了一种机制,来实现此功能。 模式主要分为四种 夜间 白天 跟随系统...

    用户1263308
  • Android 关机对话框概率没有阴影故障分析

    Android 关机对话框概率没有阴影故障分析 ? 以玩的心态,做着感兴趣的事情而已,别无其他杂念。 android recent key长按事件弹起触发最近列...

    用户1263308
  • Dagger2图文完全教程

    没有更多开场白,直接说下我对它的理解。 Dagger2 是一个Android依赖注入框架。而android开发当前非常流行的非MVP模式莫属了,Dagger2的...

    用户1263308
  • 3分钟学会在小程序开发纸飞机动画

    14年以上开发经验,对client和server开发都有着深刻认知,现在依然每周都在学习数学。

    京东技术
  • html 边框变粗 margin -1px

    最近刚开始学习web前端,html和css,对于遇到的边框变粗的问题,用margin为负值解决问题发表一些自己的理解 首先我们来看看下面一张图片 ? lis...

    用户1171305
  • 查看k8s的etcd数据

    执行查询时前缀是固定的,如下所示,使用这个前缀再加上etcd的查找命令即可成功查询:

    程序员欣宸
  • Web前端学习 第2章 网页重构14 css3动画效果

    动画效果与过渡效果的区别在于,过渡效果一般用于用户与浏览器有交互的情况下,网页出现一些动态的变化。动画效果可以实现网页没有任何交互的情况下,自己就会展示动态效果...

    学习猿地
  • Spring AOP是什么?你都拿它做什么?

    为什么会有面向切面编程(AOP)?我们知道Java是一个面向对象(OOP)的语言,但它有一些弊端,比如当我们需要为多个不具有继承关系的对象引入一个公共行为,例如...

    哲洛不闹
  • 通过分析Github众多前端代码库,总结出来的前端代码书写规范

    永远一致同一套编码规范,可以是这里列出的,也可以是你自己总结的。如果您发现本规范中有任何错误,敬请在问题中指正。

    用户5997198
  • 【融职培训】Web前端学习 第2章 网页重构14 css3动画效果

    动画效果与过渡效果的区别在于,过渡效果一般用于用户与浏览器有交互的情况下,网页出现一些动态的变化。动画效果可以实现网页没有任何交互的情况下,自己就会展示动态效果...

    学习猿地

扫码关注云+社区

领取腾讯云代金券