一周总结 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
如果有不理解或者不足不好的地方的地方 可以评论下 互相学习互相进步 感谢你的阅览
- 一周总结 app换肤和夜间模式问题
- android换肤(日间模式和;夜间模式)
- Android开发"夜间模式"换肤功能
- iOS-夜间模式(换肤设置)
- iOS-夜间模式(换肤设置)
- iOS夜间模式,换肤,换字体样式
- app切换夜间模式
- 设置App夜间模式
- Android换肤白天/夜间模式的框架
- Android MD风格(仿饿了么透明状态栏) app换肤(夜间模式与日间模式主题切换)
- 夜间模式问题
- app白天夜间模式切换
- App夜间模式简单实现
- Android夜间模式调研总结
- 43.使用MultipleTheme换肤框架实现日、夜间模式的切换
- 利用link的rel=“alternate stylesheet”实现类似夜间模式的这类换肤功能
- Android APP日夜间模式切换
- UiModeManager设置夜间模式和行车模式
- 达内代码下载地址
- java三大框架之Spring
- 华行编译文件Makefile
- composer安装yii时遇到token问题
- 设备像素比(devicePixelRatio)
- 一周总结 app换肤和夜间模式问题
- spring事务详解
- Netty权威指南 第2版学习笔记9——Channel,Unsafe和 AttributeMap
- easyui关闭所有tab
- struts2中<s:if>标签的使用
- JSP 自定义标签
- Android中的各种进程的介绍
- js元素and事件
- NodeJS 工程师必备的 8 个工具