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)访问资源的方法
获取到org.yuchen.customskin对应的Context,通过返回的context对象就可以访问到org.yuchen.customskin中的任何资源。
例如:应用apk要获得皮肤apk中的bg.png,
这样就得到了图片的引用,其他xml资源文件的获取方式也是类似的。
皮肤一般含有多个文件,例如图片、配置等文件,分散的文件不利于传输和使用,最好打包。打包的格式一般选择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代码
- Context context = createPackageContext("com.yuchen.customskin", Context.CONTEXT_IGNORE_SECURITY);
获取到org.yuchen.customskin对应的Context,通过返回的context对象就可以访问到org.yuchen.customskin中的任何资源。
例如:应用apk要获得皮肤apk中的bg.png,
Java代码
- Drawable drawable = context.getResources().getDrawable(R.drawable.bg);
这样就得到了图片的引用,其他xml资源文件的获取方式也是类似的。
0 0
- 2014年7月7日晚笔记
- 2014年7月12日晚笔记
- 2014年7月20日晚笔记
- 2015年7月22日笔记
- 2015年7月24日笔记
- 2014年7月18日中午笔记
- 2014年7月21日凌晨笔记(转载)
- 2014年7月23日凌晨笔记
- 2014年7月15日中午笔记
- 7月28日笔记
- 11月7日笔记
- 2016年4月7日 - 2016年4月9日笔记
- 2014年10月20日晚笔记1
- 2008年7月17日学习笔记
- 2008年7月18日学习笔记
- VC++学习笔记(2009年7月26日 星期日)
- 2010年7月17日听课笔记
- 2015年1月7日《linux程序设计》笔记
- ZOJ Monthly, October 2010 ABEFI
- carrierwave + magickimage实现图片切割上传
- wenwen.sogou.com/z/q583938121.htm
- 初识ClassLoader
- MessageBox的使用
- 2014年7月7日晚笔记
- jkkkkkkkkkkkkk
- 耻
- linux环境变量
- Netstat命令详解(windows下)
- POJ 3579 Median 查找中间值 二分
- linux下创建文件过多,导致inode用光
- 自定义 UITabbarController
- leedcode做题总结,题目Linked List Cycle I/II 13/10/28-30