课程/Android/移动开发
Android-实用的App换肤功能
-
-
最後的最後_
2017-04-22
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-22
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-22
-
***skinAttrs.isEmpty()为true的话,说明没有任何属性是以skin_开头的,也就是说这个view是不需要进行换肤的。
为什么将该if语句放在try-catch之后而不是之前呢?-因为这里的setFactory把我们AppCompat的setFactory给覆盖了,
那么也就是说我们在布局文件中写的view不管需不需要换肤,理论上有需要经过appcompt factory的工作,也就是我们
所写的这些反射操作。然后接下来才是我们自己需要做的事情。
比如说一个TextView,其不需要换肤,但是还是有必要去执行appcompt factory的工作。所有把检测作用的if语句放在
try-catch的后面。
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-22
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-22
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-22
- **getSkinViews() -- 根据key去取List<SkinView>
**新建两个方法
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-22
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-22
- ***对于一个Activity来说,其肯定对应着许多SkinView
即我们每一个Activity对应着一个SkinView的List集合,那么一个应用中有很多的Activity,那这样的话当任意一个
Activity触发换肤的事件之后,此时存在的其它Activity需要换肤的都需要换肤,那么这样说的话,我们的SkinView
和Activity之间的关系应该是个键值对的关系。那么维护这个键值对的Map呢,应该交由我们的一个全局的类去处理。--SkinManager
***当我们的Activity发生换肤的时候,应该给换肤的这些Activity增加一个回调,那么用户就可以得知谁换肤了。
所以Map集合的键利用一个统一的接口
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-22
- !!!
-
截图
0赞 · 0采集
-
-
最後的最後_
2017-04-22
- !!!
-
截图
0赞 · 0采集