美文网首页LeetCode刷题记录
实现App个性换肤 2018-09-17

实现App个性换肤 2018-09-17

作者: TheKey_ | 来源:发表于2018-09-17 15:34 被阅读66次

    使用 Android-skin-support实现换肤功能,效果图如下:

    1537169941547_video.gif
    实现过程:
    1.在build.gradle中导入相关依赖
     implementation 'skin.support:skin-support:3.1.0-beta1'                   // skin-support 基础控件支持
        implementation 'skin.support:skin-support-design:3.1.0-beta1'            // skin-support-design material design 控件支持[可选]
        implementation 'skin.support:skin-support-cardview:3.1.0-beta1'          // skin-support-cardview CardView 控件支持[可选]
        implementation 'skin.support:skin-support-constraint-layout:3.1.0-beta1' // skin-support-constraint-layout ConstraintLayout 控件支持[可选]
    

    2.将原来布局中的颜色使用xml方式进行替换,如

     android:background="@color/text_background"
    <color name="text_background">#ffffffff</color>
    

    3.新建Module文件,名称为night,如下图所示:


    image.png
    image.png

    4.在新建好的skin-night中,替换你要更改的颜色

     <color name="text_background">#363535</color>
    

    5.在Terminal中进行打包


    image.png

    打包命令为:

    gradlew :night:assembleDebug
    

    打包后的apk路径为:


    image.png

    6.将文件后缀改为.skin,放入main/assets/skins/night.skin目录中


    image.png
    7.在项目中新建SkinApplication
    public class SkinApplication extends Application{
    
        @Override
        public void onCreate() {
            super.onCreate();
    
            SkinCompatManager.withoutActivity(this)                         // 基础控件换肤初始化
                    .addInflater(new SkinMaterialViewInflater())            // material design 控件换肤初始化[可选]
                    .addInflater(new SkinConstraintViewInflater())          // ConstraintLayout 控件换肤初始化[可选]
                    .addInflater(new SkinCardViewInflater())                // CardView v7 控件换肤初始化[可选]
                    .setSkinStatusBarColorEnable(false)                     // 关闭状态栏换肤,默认打开[可选]
                    .setSkinWindowBackgroundEnable(false)                   // 关闭windowBackground换肤,默认打开[可选]
                    .loadSkin();
            AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
        }
    }
    

    8.引入皮肤包即可实现换肤功能

    SkinCompatManager.getInstance().loadSkin("night.skin", SkinCompatManager.SKIN_LOADER_STRATEGY_ASSETS);
    

    相关文章

      网友评论

        本文标题:实现App个性换肤 2018-09-17

        本文链接:https://www.haomeiwen.com/subject/eaalnftx.html