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