一周总结 app换肤和夜间模式问题

来源:互联网 发布:诺基亚6730c软件 编辑:程序博客网 时间:2024/05/17 08:04

因为这学期开始实习,有许多东西都是为了解决项目需要而去找资料,其实就是copy代码,感觉这样下去对于自己的技术提升没有太大的帮助,于是决定没周写篇博客来对自己这一周接触的东西来一个总结,沉淀一下知识.

我上周遇到的问题还挺多的,如何优雅的实现夜间模式(快准恨,代码改动小),公司一个老司机走了,我要接手他的代码(痛苦,难受,根本想死好吗),还有就是蓝牙电话(一个写jni的直接丢给我一个so包,开心,然后这星期就发现不太对劲了)

先谈谈如何实现夜间模式吧,因为我需要实习的这个项目基本大体的框架已经搭好了 然后leader突然和我说,我们没有夜间模式,要实现夜间模式,我第一直觉居然想要一个个去setColor,然后看了下页面的数量和代码量,感觉这就很尴尬了.然后我开始上网找解决方案.

然后发现这里面的内容好像还挺深的,涉及的东西有点多,如果只是简单想要实现夜间模式(替换背景色和改变一些图片或者字体颜色),这种是相对比较简单的,并没有什么好讲的,按照步骤来就可以搞定的了,只是在切换的时候我感觉有点卡顿.

1.在values下的attrs中写下attr(没有attrs.xml的自己建一个)

这里写图片描述

这里写图片描述
format对应的是你同的属性值
color boolean enum 等几个都很容易看出来
dimension 对应的是尺寸 例如 dp
fraction 百分比
reference 对应资源的id 就是drawable等

2.在style中增加2个style
这里写图片描述

对应着白天和黑夜 上面的item 对应着刚才在attrs中定义的attr

3.应用到布局文件中

这里写图片描述

属性也和attrs中的要相对应

4.切换白天和黑夜
在activity的setContentView()方法前调用setTheme()来改变Theme;
注意要在setContentView()之前调用
所以如果需要动态的去更改Theme需要去重启activity,有闪屏的现象,目前也没找到好的方法去避免这个现象,所以如果有大神经过,求指教.

第二种方法就不走这套setTheme了,通过动态加载来实现换肤,比如QQ的换肤,可以提供N种皮肤来给你换,相对较复杂,不过也相对较灵活.
这种网上很多大神已经有写过并且都有相应的框架了 以下是几个是个人参考的文章
https://github.com/fengjundev/Android-Skin-Loader
https://github.com/hongyangAndroid/AndroidChangeSkin
http://blog.zhaiyifan.cn/2015/09/10/Android%E6%8D%A2%E8%82%A4%E6%8A%80%E6%9C%AF%E6%80%BB%E7%BB%93/
http://www.jianshu.com/p/af7c0585dd5b

如果有不理解或者不足不好的地方的地方 可以评论下 互相学习互相进步 感谢你的阅览

1 0
原创粉丝点击