Scoops android app多主题架构(二)
来源:互联网 发布:小甲鱼c语言视频很烂吗 编辑:程序博客网 时间:2024/05/17 00:05
简要说明
通过注释方式,完成多主题的效果更换。可以减少一些代码,使得代码更清晰一些。
使用说明
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
- Scoops android app多主题架构(二)
- Scoops android app多主题架构(一)
- Scoops android app多主题架构(三)
- 一个app多主题架构完全分析
- android源生Browser分析(二)---APP层基本架构
- android主题机制(二)
- android app换肤(更换主题)
- Android app主题切换
- android更改app主题
- iOS APP 架构漫谈(二)
- iOS APP 架构漫谈(二)
- iOS APP 架构漫谈(二)
- 更改android app默认主题
- 不闪屏切换Android App主题
- Android 用户切换APP主题
- Android App整体架构设计的思考(二)
- 在你的Android App中支持多主题
- (The one day)About Android 系统状态栏与APP主题颜色一致(方法二)
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- 数据库索引
- aapt 命令可应用于查看apk包名、主activity、版本等很多信息
- Java内存详解
- 移动应用测试框架——Appium篇
- Scoops android app多主题架构(二)
- php原生导出excel文件的两种方法
- /sys/class/gpio 文件接口操作IO端口(s3c2440)
- UE4学习笔记(3)——World Composition无缝拼接地图实现
- ActiveMQ基于zookeeper+leveldb主从配置
- 零基础PHP学习笔记(二)
- 解决EasyUI Form submit和SpringMVC返回JSON在IE中变下载的问题
- BigBlueButton安装过程(在虚拟机中)
- suse11.3下samba服务的配置