您的位置:首页 > 移动开发 > Android开发

Android应用切换皮肤功能实现

2014-02-28 15:34 204 查看
[align=left]个人觉得第二个方法是比较好的实现方式[/align]

转自:http://www.eoeandroid.com/thread-318159-1-1.html

[align=left]现在大多数android应用都支持切换皮肤的功能。比如千千静听,墨迹天气等等。本文介绍两种切换皮肤的方法。[/align]
[align=left]1.第一种是通过安装皮肤apk的方式。[/align]
[align=left]当安装了皮肤apk包之后,主程序只需要读取皮肤apk包里的图片资源。就可以实现切换皮肤了。[/align]
[align=left]要获取apk皮肤包里的图片资源,需要获取到皮肤apk包的上下文Context.[/align]

代码片段,双击复制

[align=left][/align]

[align=left]图片资源的名字和位置要一致。好比如整个界面的背景mainbg.jpg,在主程序和皮肤包apk的位置都在res\drawable-hdpi\mainbg.jpg.下。[/align]
[align=left]然后通过下面这个方法:[/align]

代码片段,双击复制

[align=left]就可以获取到对应的皮肤资源。[/align]
[align=left]可以看到,首先是根据通过下面这个方法,获取到对应资源的id,然后再更加id获取到对应的图片资源。[/align]

代码片段,双击复制

[align=left]然后再设置对应控件的drawable.就实现了切换皮肤。[/align]
[align=left]因为皮肤apk包的上下文经常用到,因此我用一个静态变量保存了起来。假如在皮肤包apk里找不到对应的图片资源,就在主程序的图片资源里找,不至于图片找不到,让界面空白。[/align]
[align=left]2.第二种方式是把所有图片资源放到一起,打成一个压缩包。应用的时候把图片解压到sd卡或者是应用的data目录下。[/align]
[align=left]通过下面方法,得到图片资源的Drawable。在把Drawable 设置到控件上。[/align]

代码片段,双击复制

因为sd卡有时候会加载不成功。或者是根本没有sd卡。所有我把图片的压缩包直接解压到了
[align=left]context.getFilesDir().getPath() + File.separator + "skin"+ File.separator下。[/align]
[align=left]主程序只实现一个简单的换肤功能。就只有两个界面,一个是主界面,它的背景显示一个背景,就是各个皮肤。另外一个是设置皮肤界面。[/align]

[align=left]点击后就到了设置皮肤的界面:[/align]

[align=left]另外两个皮肤工程分别是晴天皮肤和夜晚皮肤。这两个工程非常简单,其实根本不需要activity。只需要把图片mainbg.jpg放到res\drawable-hdpi\mainbg.jpg.下。[/align]
[align=left]另外两个闪电皮肤zip包和大雪皮肤zip包,我已经放到了主程序里。点击按钮就解压。[/align]
[align=left]当然举例子少不了苍老师,呵呵。[/align]
[align=left]当点击苍老师皮肤zip时,会模拟从网络下载zip包实现切换皮肤。[/align]

代码片段,双击复制

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: