前几天在研究主题换肤功能,然后在自己的一个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
有兴趣的小伙伴可以去看一下或者尝试一下。

更多相关文章

  1. 玩转Android上透明状态栏,全屏显示以及沉浸模式(Immersive Mode)
  2. Android(安卓)源码的建造者模式
  3. Android(安卓)M新特性Doze and App Standby模式详解
  4. android轻量级数据存储框架Hawk
  5. Android(安卓)View框架总结(八)ViewGroup事件分发机制
  6. Android中实现自动轮播的框架(Banner)的介绍以及使用
  7. Snackbar使用,修改字体和背景颜色
  8. Android(安卓)基础-Activity的使用(二)
  9. S5PV210 三个Camera Interface/CAMIF/FIMC的区别

随机推荐

  1. Android技术归档
  2. ScrollView常用属性汇总
  3. Android下进行单元测试
  4. Android:shape的使用详解(2)
  5. Android开发常用属性
  6. android编译过程详解(二)
  7. Qt on Android(安卓)核心编程
  8. Android高效加载大图、多图解决方案,有效
  9. 你不知道的Runnable接口,深度解析Runnable
  10. android一些基础知识