Android 主题换肤的开源库

本开源库是基于我之前的一篇博文《Android主题换肤 无缝切换》,不知道原理的可以先看看。

出于易于集成的目的,我将其抽取出来,作为一个模块。提供简洁的 API,方便使用。

目前暂时没有发现兼容性问题,欢迎提供使用反馈。

更新日志:

1.v1.1.0:可以直接加载网络上的皮肤文件

效果图如下:

Demo

1. 使用方法:

  1. 添加依赖 compile 'com.solid.skin:skinlibrary:1.1.0'
  2. 让你的Application继承于SkinBaseApplication
  3. 让你的Activity继承于SkinBaseActivity,如果使用了Fragment则继承于SkinBaseFragment
  4. 在需要换肤的根布局上添加 xmlns:skin="http://schemas.android.com/android/skin" ,然后在需要换肤的View上加上 skin:enable="true"
  5. 新建一个项目模块(只包含有资源文件),其中包含的资源文件的name一定要和原项目中有换肤需求的View所使用的资源name一致。
  6. 打包皮肤文件,放入assets中的skin目录下(skin目录是自己新建的)
  7. 调用换肤
  8. 从assets/skin文件夹

  • 从网络

详细的使用,请到示例项目中查看

2. 其他一些重要的api

  1. SkinConfig.isDefaultSkin(context):判断当前皮肤是否是默认皮肤
  2. SkinManager.getInstance().restoreDefaultTheme(): 重置默认皮肤
  3. dynamicAddView:当动态创建的View也需要换肤的时候,就可以调用dynamicAddView

3. 使用注意事项:

  1. 默认不支持状态栏颜色的更改,如果需要换肤的同时也要更改状态栏颜色,请到您的Application文件中加入SkinConfig.setCanChangeStatusColor(true);,布局文件中的根布局一定要加上 android:fitsSystemWindows=”true” 状态栏的颜色值来源于colorPrimaryDark
  2. 本开源库使用的Activity是AppCompatActivity,使用的Fragment是android.support.v4.app.Fragment
  3. 有换肤需求View所使用的资源一定要是引用值,例如:@color/red,而不是#ff0000
  4. 当感觉自带的换肤属性不够用时,可以把源码下载下来自己去添加attr

致谢:

本项目是基于Android-Skin-Loader这个开源库改进而来,再次对原作者表示感谢 Android-Skin-Loader

LICENSE

展开阅读全文

没有更多推荐了,返回首页