Android之Theme.AppCompat.Light 继承关系图及Theme定制思路

泡在网上的日子 / 文 发表于2014-11-24 13:01 次阅读 Theme

转自:http://enlangtech.com/?p=356

Android应用程序的主题(Theme)定制真是个头疼的问题,不同的Android版本导致分支众多,主题的属性(Property)又很多并且没有文档说明,这样的情况下如果没有一个清晰的关系图,很容易不知道从哪里下手去定制。Android Lollipop发布后,Google更新了Support Library V7,用于兼容Pre-Lollipop的设备,使其可以使用部分Material Design的特性。Material Design是Google力推的新一代跨平台界面设计标准,得到了设计界的广泛认可, Android应用向这个设计标准迁移已不可避免。因此从现在开始,建议新开发的Android应用程序把父主题设为Theme.AppCompat.Light或者其子主题,再根据不同的版本进行对应的定制化。废话不说了,下面就是主题的关系图(用类图表示):

关系图中的属性主要集中在ActionBar、文字颜色、应用的基本配色等,其它的需要的属性基本上是可以根据关系找到的。从图中可以看出,不同版本的主题属性是有一些差异的,因此对某些属性定制而言,在你的应用中也需要对版本进行区分,具体来说就是:除了默认的values目录外,你还需要对不同版本建立不同的values目录,根据继承关系,你起码应该建立values-v11、values-v14、values-v21这三个目录,在这些目录中都放一个styles.xml,里面是你应用程序的主题,这个主题都应该继承自Theme.AppComapt.Light及其子主题(对于所有版本一样的属性可以在values的目录的styles.xml中建立1个根主题,便于不同版本的主题进行重用),那么没有版本差异的属性设置就修改values目录中styles.xml,有版本差异的主题就修改对应版本的values目录中的styles.xml,这样就可以很好地维持了版本的兼容性,又可以使用最新版Lollipop的主题特性。

收藏 赞 (6) 踩 (0)
上一篇:dynamic-load-apk-Apk动态加载框架使用初体验
因为想要将本网站上的开源代码直接做成一个能显示效果的app,决定摸索下android的插件开发,发现只有两个开源的插件系统可选: AndroidDynamicLoader dynamic-load-apk 因为第一个只允许在fragment的基础上开发插件,第二个没有此限制并且是国人开发,文档比
下一篇:Android MP3录音实现
Android录音支持的格式有amr、aac,但这两种音频格式在跨平台上表现并不好。 MP3显然才是跨平台的最佳选择。 近期由于项目需要,实现了这个需求,代码托管在Github上,欢迎拍砖 项目地址 GavinCT/AndroidMP3Recorder 使用方法见:README.md 推荐直接下载libs