Android主题换肤
前几天在研究主题换肤功能,然后在自己的一个App框架Demo中尝试了主题换肤,功能是实现了,就是效果还没有那么完善。
1.引入:
首先在自己的build.gradle中引入该第三方框架,第一项是必选的,后面三项可以根据自己的需求来。
compile 'skin.support:skin-support:2.2.3' // skin-support basic widgetcompile 'skin.support:skin-support-design:2.2.3' compile 'skin.support:skin-support-cardview:2.2.3' compile 'skin.support:skin-support-constraint-layout:2.2.3'
2.初始化
在自己的Application的onCreate方法中进行初始化:
SkinCompatManager.withoutActivity(this).loadSkin();SPUtils.init(this);//这个主要是框架作者使用夜间模式和正常模式切换的时候,用于存储模式信息用的
3.使用
例如要使用夜间模式:
SkinCompatManager.getInstance().loadSkin("night.skin", new SkinCompatManager.SkinLoaderListener() { @Override public void onStart() { } @Override public void onSuccess() { //这里是切换成功后的回调,可以做一些自己想要的设置 } @Override public void onFailed(String s) { } });
恢复默认的模式:
SkinCompatManager.getInstance().restoreDefaultTheme();
4.皮肤包的制作:
在第三步中,使用了一个名为”night.skin”的皮肤包。它是由我们本地制作的。
接下来介绍一下制作过程:
首先新建一个项目(File-new-new project),名字随便取,为了好理解,我建了一个Night的工程。
在这个Night的res的color.xml中:
设置夜间模式的一些需要的颜色
<color name="colorPrimary">#000000color> <color name="colorWhite">#ffffffcolor> <color name="colorText">#ffffffcolor> <color name="colorGray">#000000color>
我们再看看自己工程下的color.xml文件:
<color name="colorPrimary">#3F51B5color> <color name="colorWhite">#ffffffcolor> <color name="colorText">#000000color> <color name="colorGray">#cccccccolor>
两者需要用到的颜色命名需要一致,颜色值可以根据自己的需求来。
我这里只是简单地使用一下这个主题换肤功能,所以没有对颜色要求很多。
接着在需要使用这些颜色的地方设置就好了,例如:
"@+id/common_title" android:text="title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="@color/colorText" android:textSize="@dimen/font_big" android:visibility="visible" />
这个TextView在正常模式下的颜色是:
<color name="colorText">#ffffff
而到了夜间模式就变成了:
<color name="colorText">#000000
颜色都设置好了以后,我们对Night这个工程进行打包:
步骤:Build->Build APK(s)
找到打包完的apk文件,将xxx.apk 改名为 night.skin,
最后在自己的项目的main下新建assets文件夹,在这下面新建一个skins文件夹,将night.skin放进去就OK了!
以上就是使用这个主题换肤功能的过程了,整个过程还是挺简单的,但是目前这个第三方框架好像还不支持状态栏换肤,所以还是有点小遗憾,希望它后面能实现吧。
最后这是我在github上找的这个主题换肤的第三方框架,下面是地址:
https://github.com/ximsfei/Android-skin-support
有兴趣的小伙伴可以去看一下或者尝试一下。
更多相关文章
- 玩转Android上透明状态栏,全屏显示以及沉浸模式(Immersive Mode)
- Android(安卓)源码的建造者模式
- Android(安卓)M新特性Doze and App Standby模式详解
- android轻量级数据存储框架Hawk
- Android(安卓)View框架总结(八)ViewGroup事件分发机制
- Android中实现自动轮播的框架(Banner)的介绍以及使用
- Snackbar使用,修改字体和背景颜色
- Android(安卓)基础-Activity的使用(二)
- S5PV210 三个Camera Interface/CAMIF/FIMC的区别