Android免费培训(118949422)第一期
转载请注明出处,商用请与本人联系。
本系列专题培训适用范围:初级Android程序员,即有J2SE基础和Android初级水平。J2SE基础是指掌握JAVA语法,1.5、1.6新增的语法不完全掌握也没关系。了解基本的面向对象思想、能编写简单的J2SE程序,掌握基本的调试方法,熟悉Swing更好。Android初级是指掌握Activity、Service、BroadcastReceiver、Intent、SQLite、UI组件的使用,能参照例子编写简单的Android应用程序。
先看一下实现的效果:
本节课程的目的:学会换肤的方案及实现,掌握不同换肤方案的优缺点及适用场合。
希望各位同学做到:学习某一个技巧就掌握透彻,多练习。最好举一反三、触类旁通,掌握分析问题解决问题的思路和方法。
我讲解的是原理以及实现的关键技术点,细节、优化及与课程主题不相关的或初级的内容可能不会讲解。这是免费培训,精力有限,暂时只能做到让普通的变优秀,让优秀的变卓越。你要是已经卓越了来教教我吧。暂时不做入门培训。
国内有很多的软件都支持皮肤定制,这也是与国外软件重大不同之一,国外用户注重社交、邮件等功能,国内用户则重视音乐、小说、皮肤等功能,本节课程就来讲解Android应用程序如何实现换肤功能。
软件换肤从功能上可以划分三种:
1) 软件内置多个皮肤,不可由用户增加或修改;
最低的自由度,软件实现相对于后两种最容易。
2) 官方提供皮肤供下载,用户可以使用下载的皮肤;
用户可选择下载自己喜欢的皮肤,有些玩家会破解皮肤的定制方法,自己做皮肤使用,或者传到网上给大家用。
3) 官方提供皮肤制作工具或方法,用户可自制皮肤。
这种方式使用户有参与感,自由度较高。用户可根据自己的喜好定制软件的皮肤。有些软件官网提供皮肤定制的工具或者方法,我建议最好有可视化带向导的工具。用户只要自己找一些图片、修改文字的字体替换就可以了。用户可以上传自制的皮肤,提供其他用户下载,还可以赚得一些虚拟货币或者奖品什么的。这种一般都是打包为.zip格式的。扩展名可由各公司自定义,有制作工具的话直接导出来最方便。
首先我们要弄清楚换肤的定义,软件皮肤包括图标、字体、布局、交互风格等,换肤就是换掉皮肤包括的部分或所有资源。
前面提到的三种皮肤,从软件实现上来看,它们的本质区别是皮肤是否内置到应用程序中。对于内置的实现比较简单,只要在开发应用的过程中设计几套皮肤供用户选择。这里用到的知识不超过Android基础,不详细讲解。
本节课程重点讲解如何实现皮肤与应用程序分离。
皮肤一般含有多个文件,例如图片、配置等文件,分散的文件不利于传输和使用,最好打包。打包的格式一般选择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格式的皮肤
技术点在于如何去读取zip文件中的资源以及皮肤文件存放策略。
方案:如果软件每次启动都去读取SD卡上的皮肤文件,速度会比较慢。较好的做法是提供一个皮肤设置的界面,用户选择了哪一个皮肤,就把那个皮肤文件解压缩到”/data/data/[package name]/skin”路径下,这样不需要跨存储器读取,速度较快,而且不需要每次都去zip压缩包中读取,不依赖SD卡中的文件,即使皮肤压缩包文件被删除了也没有关系。
实现方法:
1. 在软件的帮助或者官网的帮助中提示用户将皮肤文件拷贝到SD卡指定路径下。
2. 在软件中提供皮肤设置界面。可以在菜单或者在设置中。可参考墨迹、搜狗输入法、QQ等支持换肤的软件。
3. 加载指定路径下的皮肤文件,读取其中的缩略图,在皮肤设置界面中显示,将用户选中的皮肤文件解压缩到”/data/data/[package name]/skin”路径下。
4. 软件中优先读取”/data/data/[package name]/skin/”路径下的资源。如果没有则使用apk中的资源。
源代码及答疑都在中。
分享到:
相关推荐
该资源是 Android 应用实现换肤功能的demo程序,同时也是博客文章:http://blog.csdn.net/janice0529/article/details/39999727 中demo程序, 博客中有详细的demo程序设计介绍。
本文实例讲述了Android编程实现换肤功能的方法。分享给大家供大家参考,具体如下: 本系列专题培训适用范围:初级Android程序员,即有J2SE基础和Android初级水平。J2SE基础是指掌握JAVA语法,1.5、1.6新增的语法不...
有两个工程,宿主中加载插件apk中的图片实现换肤功能,使用反射+类加载器实现。
可实现换肤功能,apk和zip方式,详情请看eoeanroid站内换肤博客
就这么简单,你的APK已经拥有了强大的换肤功能,当然现在是拥有了换肤功能,别忘了。 功能 支持布局中用到的资源换肤。 支持代码中设置的资源换肤。 默认支持大部分基础控件,材质设计换肤。 支持动态设置主题,支持...
这样轻松实现了软件的功能扩展,而升级功能时只用更新对应插件, 而不是需要更新整个应用,降低了程序的耦合度. 而在Android中的实现思路,即为将一个较大的APK,分离为一个主程序的APK,和其他各
4、应用场景:安卓编程,项目产品化、资源处理等内容实现 5、特点:简化安卓移动开发代码实现过程 6、适用人群:想阅读安卓app源码的初学者 7、使用/学习说明:在学习的过程要结合安卓开发的核心原理与内容需求分析和...
实现一个IM实时聊天应用,少不了弄服务器,目前开源的Openfire服务器就比较合适,而且很多功能都已经封装好了,实现聊天APP就简洁很多。服务器后端的数据库我选择了MySQL,当然Openfire也支持大部分的主流数据库,...
支持换肤功能 支持多语言 应用插件 运动 二维码识别、生成 屏幕截图 Windows Unix、Linux Android 屏幕录像 日历 人脸识别 支持电子白板 远程桌面、远程控制 跨平台 Windows Linux Android MacOs...
基于股票的一个Android应用(内含源码) .rar 多点缩放字体DEMO .rar 多种控件多种实现方式Demo.rar 多级PopupWindow的小demo.zip 带手势划动功能的日历源码.rar 抖动窗口.rar 换肤.zip 斗地主源码实现.zip 毕业设计...
更新卷轴阅读模式下的手势操作,支持双击放大和手势放大,感谢开源作者PortgasAce,参考自ZoomRecyclerView功能简介 主页 排行榜 分类 最新 搜索(模糊搜索) 书架 收藏列表(可编辑) 历史记录(可编辑) 下载...
4.换肤功能 打造专属的个性浏览器。 多款色彩主题轻松选择,个性定制浏览器。 5.省流模式 浏览网页速度更快更省流量。 切换WWW\WAP页面打开方式,速度和体验两不误。 6.丰富应用 应用功能傲游上网更精彩。 笑话、...
原帖可以看这里http://blog.csdn.net/ericfantastic/article/details/49451249 实现了微信的登录注册、主界面、聊天会话、通讯录、发现界面、个人设置、添加好友、扫描二维码、视频通话、等所有基本功能。...
支持换肤功能 支持多语言 应用插件 运动 二维码识别、生成 屏幕截图 Windows Unix、Linux Android 屏幕录像 日历 人脸识别 支持电子白板 远程桌面、远程控制 跨平台 Windows Linux Android MacOs ...
继不久前推出 Android平台上的应用产品以后,该团队在今天又带来了一款尚在封测过程中的PC客户端应用程序。相比于老牌的 Evernote,麦库更为轻量级,整个安装程序不足3MB,同时,面对海量的个人知识库文档,麦库还...
Activity之间的转跳会有一个动画效果,音乐播放器主界面使用了常见的选项卡布局,按照音乐列表、艺术家、专辑进行布局,音乐设置提供了睡眠定时、换肤功能(更强的换肤功能可以在本站搜索“换肤”)、和摇一摇换歌...
功能简介 主页 排行榜 分类 最新 搜索(模糊搜索) 书架 收藏列表(可编辑) 历史记录(可编辑) 下载列表(可编辑) 我的 夜间模式(换肤) 清除缓存 自动更新 问题反馈 关于 漫画阅读 漫画详情 漫画阅读(预加载,...