打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android-skin-support 一款用心去做的Android 换肤框架


作者:ximsfei

原文地址:http://blog.csdn.net/ximsfei/article/details/54586827


介绍

Github地址: https://github.com/ximsfei/Android-skin-support

Android-skin-support: 一款用心去做的Android 换肤框架, 极低的学习成本, 极好的用户体验.

重要的事情说三遍: 
只需要两行代码, 就可以实现换肤, 你值得拥有!!! 
只需要两行代码, 就可以实现换肤, 你值得拥有!!! 
只需要两行代码, 就可以实现换肤, 你值得拥有!!!

第一行: 在Application的onCreate中初始化

SkinCompatManager.init(this).loadSkin();

第二行: 继承自SkinCompatActivity

public class BaseActivity extends SkinCompatActivity {}

就这么简单, 你的APK已经拥有了强大的换肤功能.

skin-app // 换肤demo app 
skin-night // 换肤demo 夜间模式 
skin-support // 换肤框架, 基础控件支持 
skin-support-design // 换肤框架, Material Design 支持

最佳实践

仿网易云音乐皮肤切换(https://github.com/ximsfei/Skin-Demo)

下载(https://github.com/ximsfei/Res/blob/master/skin-demo/app-debug.apk)

 
 

支持

目前支持:

  • 支持Android 4.x, 5.x, 6.x, 7.x

  • 支持自定义View换肤

  • skin-support: appcompat-v7 支持

    • View

    • Button

    • CheckBox

    • EditText

    • TextView

    • ImageView

    • ImageButton

    • RadioButton

    • FrameLayout

    • LinearLayout

    • RelativeLayout

    • CheckedTextView

    • AutoCompleteTextView

    • MultiAutoCompleteTextView

    • android.support.v7.widget.Toolbar

  • skin-support-design: material design 支持

    • TabLayout

    • AppBarLayout

    • NavigationView


用法

导入:

git clone https://github.com/ximsfei/Android-skin-support.git


选择需要的module依赖:

// aardependencies {    compile(name: 'skin-support-release', ext: 'aar') // Android 基础控件, 及V7包中的一些控件    compile(name: 'skin-support-design-release', ext: 'aar') // Android support design包中的一些控件}

dependencies {

或者

   compile project(':skin-support')    compile project(':skin-support-design')}

或者

// 可以打开调试日志dependencies {    releaseCompile project(path: ':skin-support', configuration: 'release')    debugCompile project(path: ':skin-support', configuration: 'debug')    releaseCompile project(path: ':skin-support-design', configuration: 'release')    debugCompile project(path: ':skin-support-design', configuration: 'debug')}

初始化:

在Application的onCreate中初始化

@Overridepublic void onCreate() {    

    super.onCreate();    SkinCompatManager.init(this).loadSkin(); 

    // 应用启动加载当前(保存在SharedPreferences中)皮肤库

}

继承SkinCompatActivity

让所有需要换肤的Activity继承自skin.support.app.SkinCompatActivity.

public class BaseActivity extends SkinCompatActivity {}

加载插件皮肤库

// 指定皮肤插件, 并且监听加载状态

SkinCompatManager.getInstance().loadSkin('new.skin');

// 恢复应用默认皮肤SkinCompatManager.getInstance().restoreDefaultTheme();

自定义View换肤

要点:

  1. 实现SkinCompatSupportable接口

  2. 在构造方法中解析出需要换肤的resId

  3. 在applySkin方法中实现换肤

实现:

  1. 自定义View可以直接继承自SkinCompatView, SkinCompatLinearLayout等已有控件

    eg: CustomTextView

  2. 不想继承自已有控件

    eg: CustomTextView2

  3. 需要换肤自定义属性

    // 需要换肤AutoCompleteTextView的R.attr.popupBackground属性 
    eg: SkinCompatAutoCompleteTextView

  4. 需要使用第三方库控件怎么办

    // 需要使用https://github.com/hdodenhof/CircleImageView 控件, 并且要支持换肤 
    eg: CustomCircleImageView

制作皮肤插件:

新建Android application工程

将需要换肤的资源放到res目录下(同名资源)

打包生成apk, 即为皮肤包


END




Android订阅是探讨Android开发的公众号,分享最有价值的Android干货文章

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
DBFlow的初步使用
Android如何关闭Application
android – Manifest合并失败:属性应用程序@ appComponentFactory
Android之Content和activity、service、Application关系和attachBaseContext函数调用的时候
Support PreferenceFragment 兼容2.1及以上版本
android 完全退出应用,制造异常退出。
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服