chentl666 / skin

动态换肤框架

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

skin

动态换肤框架

基于androidx库开发

1.先在项目根目录的 build.gradle 的 repositories 添加:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

2.然后在dependencies添加:

dependencies {
	...
	implementation 'com.github.chentl666:skin:1.0.0'
}

3.Application

public class SkinApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SkinManager.init(this);
    }
}

3.activity继承SkinActivity:


 skinDynamic(skinPath, R.color.skin_item_color);
 传入皮肤包路径和主题色。

 defaultSkin(R.color.colorPrimary);
 恢复原始主题

 在activity中重写openChangeSkin()。
     @Override
     protected boolean openChangeSkin() {
         return true;
     }


4.打一个相同资源名称的apk,修改名称存放到手机中,获取资源包的路径

5.判断是否默认包 SkinManager.getInstance().isDefaultSkin();

说明:本项目基于androidx库开发,所以组件必须是androidx..AppCompat***,否则不支持换肤。 ...

自定义控件实现com.ctl.skin.core.ViewsMatch接口,重写skinnableView()方法

    @Override
    public void skinnableView() {
        // 根据自定义属性,获取styleable中的circleColor属性
        int key = R.styleable.CustomCircleView[0]; // = R.styleable.CustomCircleView_circleColor
        int resourceId = attrsBean.getViewResource(key);
        if (resourceId > 0) {
            if (SkinManager.getInstance().isDefaultSkin()) {
                int color = ContextCompat.getColor(getContext(), resourceId);
                mTextPain.setColor(color);
            } else {
                int color = SkinManager.getInstance().getColor(resourceId);
                mTextPain.setColor(color);
            }
        }
        invalidate();
    }

About

动态换肤框架


Languages

Language:Java 100.0%