关于应用内主题切换的三种方式

三个开源的项目:

MultipleTheme

Colorful 

AndroidChangeSkin

当前更换主题的方式如下:

Theme:

设置Theme来切换不同主题。

优点:利用系统自带的机制实现,根据标志位setTheme()即可。

缺点:在主题切换界面不重启的情况下,不能自动完成界面主题的刷新。

遍历view:

对主题的更换,使用遍历View,然后单独设置更改后的属性即可。

优点:可以即时更新界面,不需要重启Activity

缺点:需要单独添加标志位,来标记需要更换主题的View,需要增加额外工作,另外就是标记的添加,有可能影响原来的代码逻辑。

项目一:MultipleTheme

这个项目的实现方案比较好理解,采用的是Theme+遍历更新View的思路。

步骤一:

public class BaseActivity extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(SharedPreferencesMgr.getInt("theme", 0) == 1) {
            setTheme(R.style.theme_2);
        } else {
            setTheme(R.style.theme_1);
        }
    }
}
步骤二:

 ColorUiUtil.changeTheme(rootView, getTheme());

步骤三:

public interface ColorUiInterface {

    public View getView();

    public void setTheme(Resources.Theme themeId);
}
以上操作会是成本较高的方案。

而且就目前来说,Demo里面存在BUG,点击切换皮肤之后,Button的字体颜色换了,但是背景颜色却消失了,同时这个项目已经4个月没有维护。

结论:不推荐

项目二:Colorful 

Colorful与上面一种方案总体思想是相通的,但是在具体实现细节上各有特色。

首先在需要更换主题View的筛选上,上面的方案用的是是否实现某接口来识别,而在Colorful中则是需要用户手动绑定,建立需要更换的View与属性之间关系,虽然在编码上面需要花费一些时间,但是这样就不需要替换所有的View,在总体上是优于前一种方案。
项目三:AndroidChangeSkin

AndroidChangeSkin这个库不单单可以完成应用内资源的替换,还可以完成外部apk资源包的主题加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值