Android实现换肤功能(二)

来源:互联网 发布:linux 32位 x86 编辑:程序博客网 时间:2024/05/14 15:56

前两天写的上章关于换肤的功能获得了很好的反响,今天为大家介绍另一种方式。今天实现的策略也是网友建议的,然后我自己去写了个demo,大家自己评估下相比第一种方式的优势和劣势在哪里。

简单介绍下关于第一种关于换肤实现的方法一些不友好的地方,比如点击了换肤的功能键,需要先下载一个资源apk,然后再去引用其中的资源ID,于用户使用起来确实有有很多不便之处。今天为大家介绍的方法是克服了这一弊端的,可以实现直接在应用内切换,把资源文件存储在本地apk的,读取和操作也是更加便捷的,下面介绍下大致的一个实现逻辑。

一般实现换肤的功能有这么几点:一是图片资源的替换;二是文字颜色、大小、文字内容的更改。本次实现的策略都是基于asserts目录去实现的,假设有两套皮肤可以更换,我们需要在asserts文件夹下新建对应两套皮肤的目录,而他们其中拥有相同名称的资源(包括图片资源和properties文件)。使用第一套皮肤的话就调用第一目录下的所有资源,调用第二套皮肤的话就使用另一目录下的资源。由于引用asserts下的资源不需要像res资源一样,而是需要通过AssertManager调用对应的资源路径就可以实现,所以实现起来相对R文件会稍稍麻烦麻烦一点。关于文字颜色等的属性的变化都是统一保存在properties里面,需要调用的话也只是调用Properties中属性值就可以了,非常简单方便。下面为大家演示下简单的使用。

一、关于图片资源的引用


一般加载图片会通过两种方式去实现,一是Bitmap,二是Drawable。这里也都有了其实现的方法。

二、关于TextView属性值的加载

加载TextView属性值之前,记得一定要先初始化Properties,所有的属性值都是在properties中。

三、使用

点击按钮切换皮肤内容。

今天的文章比较短,大家如有好的想法或者其他换肤好的实现,请私信我,我会在下面几天整理后继续为大家介绍。

源码地址:https://github.com/JackCho/SkinChangeDemo2

如果觉得对你有所帮助,欢迎大家订阅我的微信公众账号——Android干货分享(ID:android_share)。下面是微信的二维码,为你提供及时高质的Android干货。技术交流QQ群:318588906,欢迎大家加群,共同探讨下Android和Java技术,一起壮大我们的微信干货分享社区。

0 0
原创粉丝点击