apkplug主题皮肤切换之通用主题-04

南笙酒味 提交于 2019-12-03 05:16:41

 该文章基于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设计了一套适用于自定义控件的主题切换方案,通过这套方案开发者可以很简单灵活的定义切换规则且不失灵活性。我们称之为"自定义主题切换"

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!