2014年7月7日晚笔记

来源:互联网 发布:广州云计算培训 编辑:程序博客网 时间:2024/04/28 05:19
如何实现皮肤与应用程序分离。 

皮肤一般含有多个文件,例如图片、配置等文件,分散的文件不利于传输和使用,最好打包。打包的格式一般选择zip格式。这里分两种情况,一种是apk,例如AdwLauncher,它的桌面皮肤格式是一个apk;另一种是自定义扩展名,例如墨迹天气皮肤扩展名是mja,搜狗输入法的皮肤扩展名是sga,它们的文件格式实际上都是zip。 

下面我们分别讲解。 

一.apk格式 

现在的问题变成了一个应用如何读取另一个apk中的资源。 

在android系统中,apk之间可以相互读取数据的条件是:有同样的签名,并且AndroidManifest.xml文件中配置的android:sharedUserId属性值相同,那么两个apk运行在同一个进程中,可以互相访问任意数据。 

方法如下: 

1) 应用程序和皮肤程序的AndroidManifest.xml中配置 

例如: android:sharedUserId="org.yuchen" 

2) 文件与应用apk中对同一功能的皮肤文件名要一致 

例如:应用程序的背景图片路径:/SkinDemo/res/drawable-hdpi/bg.png 

那么皮肤apk中的背景图片文件路径也应该是: 

CustomSkin/res/drawable-hdpi/bg.png 

3)访问资源的方法 

Java代码  收藏代码
  1. Context context = createPackageContext("com.yuchen.customskin", Context.CONTEXT_IGNORE_SECURITY);  


获取到org.yuchen.customskin对应的Context,通过返回的context对象就可以访问到org.yuchen.customskin中的任何资源。 

例如:应用apk要获得皮肤apk中的bg.png, 
Java代码  收藏代码
  1. Drawable drawable = context.getResources().getDrawable(R.drawable.bg);   


这样就得到了图片的引用,其他xml资源文件的获取方式也是类似的。 

0 0
原创粉丝点击