该文章基于V1.6.9版本
apkplug主题切换有两个层次的切换,这篇文章只讲解通用主题切换层次
一 何为通用主题切换
apkplug通用主题切换可以简单的理解为一套可动态替换的系统主题(由主题包提供)。它是apkplug在系统主题与应用activity主题之间新增的一层主题样式。它们之间有叠加关系
注:系统主题只支持对Button,ListView,Activity背景等已定义的系统控件样式进行切换,普通应用可通过(Activity.setTheme())设置系统或自定义主题。
二 apkplug通用主题的作用
由以上图示,我们可通过一些设置实现动态替换一些系统控件的样式,Button,背景图片,字体,颜色,大小等。
三 apkplug通用主题方案设置流程
1.主题包按照安卓主题设计流程设计一套主题样式如:
<style name="AppTheme_Default" parent="@android:style/Theme.Light">
<!--Button样式 -->
<item name="android:buttonStyle">@style/ButtonStyle</item>
<!--activity 背景 -->
<item name="android:windowBackground">@drawable/rootblock_default_bg</item>
<!-- 字体颜色 -->
<item name="android:textColor">@color/red</item>
</style>
2.通过以下代码将该主题设置为apkplug层主题
OSGIServiceAgent<ThemeControl> agent=new OSGIServiceAgent<ThemeControl>(mcontext,ThemeControl.class.getName());
agent.getService().setTheme(mcontext,mcontext.getBundle(), R.style.AppTheme_Another);
三 apkplug通用主题的局限性
因为主题是叠加的关系,所以apkplug的主题样式很可能无法全部适用到上层的Activity界面中,因为大部分情况下我们会单独对Activity的布局和控件做一些处理。
四 解决方案
因为通用主题的局限性,所以我们又为apkplug设计了一套适用于自定义控件的主题切换方案,通过这套方案开发者可以很简单灵活的定义切换规则且不失灵活性。我们称之为"自定义主题切换"
来源:oschina
链接:https://my.oschina.net/u/138488/blog/269238