Android应用的换肤实现(APK)

本文详细介绍了Android应用换肤的基本原理,包括skinAPK的整合方式、资源定位问题及解决策略,并通过实例演示了如何正确获取和使用皮肤资源。

Android应用换肤大概有如下几种方式:

  • 内置皮肤资源
  • skin APK
  • 压缩skin文件
skin APK是通过main APK+skin APK的方式,需要在AndroidManifest.xml文件中配置的android:sharedUserId属性值相同,从而实现主从APK能共享共享资源。
代码实现如下:
Context context = createPackageContext("com.example.blueskin", Context.CONTEXT_IGNORE_SECURITY);

int resId  = context.getResources().getIdentifier("background", "color", FLAG_BLUE_SKIN);
mainView.setBackgroundColor(context.getResources().getColor(resId));


在demo实践中,当我获取了skin APK的Context后,直接context.getResources().getColor(R.color.background),但程序报错找不到资源。检查发现background在main、skin APK中编译的R值不一样,造成不能正确的定位到skin中的资源。因此需要先获取正确的resource id,再根据此id获取对应资源。


版本号:V2.3 发布时间:2015.04.12 更新内容: 1、新增DelphiXE8版本 2、新增TMlSkinLine组件 3、新增TMlSkinMessageBoxStyle组件(可以用来设置MlMessageBox的显示风格) 4、新增TMlSkinSplitter组件 5、新增TMlSkinDatetimePicker组件(选择日期时间的组件) 6、TMlSkinEdit增加ShowCheckBox属性 7、新增:仿360云盘 Demo 8、修正当TMlSkinGroupBox的字体变大后,CaptionHeight设置无效的问题 9、修正某些情况下TMlFormLayerBorder边框显示时会出现白框的问题 10、修正在使用TMlSkinMenu后,某些时候,菜单上的Png图标无法透明显示的问题 11、修正TMlSkinPageControl动态创建后,在Free时Sheet时会报错的问题 12、修正MlSKinNCButton 默认设置为DOWN=TRUE的时候,运行后需要鼠标移动到按钮上面触发一下,才会显示为DOWN的状态问题 13、修正MlSkinProgressbar的当Value超出范围后会报错的问题 14、修正在删除TMlSkinListView的Scroolbar组件时,会引起IDE报错的问题 15、修正因为TMlSkinForm.MainMenu属性在某些情况下会引起Delphi IDE报错的问题 16、修正TMlSkinGroupBox某些时候会出现黑边的问题 17、MlSkinPageControl 添加DisableFont属性 18、MlSkinEdit.Space.Active = False时,自动设置文本为垂直居中对齐 19、修正MlSkinEdit因为设置了MaxLength属性,在选中里面文本后,文本不能被删除的问题 20、TMlSkinExpandBox新增AllowCollapse属性(为False时,“折叠”操作无效) 21、修正了MlSkinMemo.Align=alClient时,在窗体最大化会报错的问题 22、修正几处因为其它组件引起的部分MlSkin容器组件颜色显示异常的问题 23、其它小的改动和调整
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值