实现换肤功能的思路

参考至:通过createPackageContext 实现皮肤打包成apk的demo

有一个应用需要3套皮肤:默认,红色,蓝色

思路:自定义red_skin,blue_skin两个项目,分别放入红色,蓝色皮肤,这两个项目只放入图片资源,没有其他代码。

默认皮肤所在的项目为代码所在的项目。

设置包名:

red_skin项目:com.myapp.red

blue_skin项目:com.myapp.blue

把以上3项目的android:sharedUserId值设为一样的,如

android:sharedUserId="com.myapp" (在AndroidManifest.xml中),并且这3个项目中的图片资源的名称都一致。

在主项目中(默认皮肤所在的项目):

如果当前选中的是红色皮肤,可以这样操作:

             Context friendContext  = this.createPackageContext("com.myapp.red",
                            Context.CONTEXT_IGNORE_SECURITY);
                View view = View.inflate(friendContext, R.layout.main, null);
                setContentView(view);


上述代码表示根据包名获取红色皮肤所在包的上下文,然后用View.inflate(friendContext, R.layout.main, null);就可以把红色皮肤下的图片资源与当前layout绑定,实现换肤功能。

另外若想获取红色皮肤包下的某一张图片资源可以用以下方法调用:

friendContext.getResources().getIdentifier("imgId", "array", "com.myapp.red")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值