前两天写的上章关于换肤的功能得到了很好的反响,今天为你们介绍另外一种方式。今天实现的策略也是网友建议的,而后我本身去写了个demo,你们本身评估下相比第一种方式的优点和劣势在哪里。android
简单介绍下关于第一种关于换肤实现的方法一些不友好的地方,好比点击了换肤的功能键,须要先下载一个资源apk,而后再去引用其中的资源ID,于用户使用起来确实有有不少不便之处。今天为你们介绍的方法是克服了这一弊端的,能够实现直接在应用内切换,把资源文件存储在本地apk的,读取和操做也是更加便捷的,下面介绍下大体的一个实现逻辑。git
通常实现换肤的功能有这么几点:一是图片资源的替换;二是文字颜色、大小、文字内容的更改。本次实现的策略都是基于asserts目录去实现的,假设有两套皮肤能够更换,咱们须要在asserts文件夹下新建对应两套皮肤的目录,而他们其中拥有相同名称的资源(包括图片资源和properties文件)。使用第一套皮肤的话就调用第一目录下的全部资源,调用第二套皮肤的话就使用另外一目录下的资源。因为引用asserts下的资源不须要像res资源同样,而是须要经过AssertManager调用对应的资源路径就能够实现,因此实现起来相对R文件会稍稍麻烦麻烦一点。关于文字颜色等的属性的变化都是统一保存在properties里面,须要调用的话也只是调用Properties中属性值就能够了,很是简单方便。下面为你们演示下简单的使用。github
1、关于图片资源的引用微信
通常加载图片会经过两种方式去实现,一是Bitmap,二是Drawable。这里也都有了其实现的方法。.net
2、关于TextView属性值的加载图片
加载TextView属性值以前,记得必定要先初始化Properties,全部的属性值都是在properties中。资源
3、使用get
点击按钮切换皮肤内容。源码
今天的文章比较短,你们若有好的想法或者其余换肤好的实现,请私信我,我会在下面几天整理后继续为你们介绍。it
源码地址:https://github.com/JackCho/SkinChangeDemo2
若是以为对你有所帮助,欢迎你们订阅个人微信公众帐号——Android干货分享(ID:android_share)。下面是微信的二维码,为你提供及时高质的Android干货。技术交流QQ群:318588906,欢迎你们加群,共同探讨下Android和Java技术,一块儿壮大咱们的微信干货分享社区。