Skip to content

Android-skin-support is an easy to use dynamic skin framework for Android, Only one line of code to integrate it.一款用心去做的Android 换肤框架, 极低的学习成本, 极好的用户体验. 一行代码就可以实现换肤, 你值得拥有!!!

License

Notifications You must be signed in to change notification settings

appsou/Android-skin-support

 
 

Repository files navigation

Android-skin-support

In English | 中文

skin-support build license

Android-skin-support is an easy to use skin framework for Android. The best case, Only one line of code to integrate the framework.

SkinCompatManager.withoutActivity(this).loadSkin();

Now, you have a strong skinning feature. What you need to do is make a skin.

default app-in plug-in

Table of Contents

Gradle Dependencies

The Gradle Dependency is available via jCenter,

Add dependencies directly, For the latest version, please refer to change log

compile 'skin.support:skin-support:2.2.3'                   // skin-support basic widget
compile 'skin.support:skin-support-design:2.2.3'            // skin-support-design material design support [selectable]
compile 'skin.support:skin-support-cardview:2.2.3'          // skin-support-cardview CardView support [selectable]
compile 'skin.support:skin-support-constraint-layout:2.2.3' // skin-support-constraint-layout ConstraintLayout support [selectable]

Integration

Initialization

Only one line of code to integrate the framework.

@Override
public void onCreate() {
    super.onCreate();
    SkinCompatManager.withoutActivity(this)                         // Basic Widget support
            .addInflater(new SkinMaterialViewInflater())            // material design support           [selectable]
            .addInflater(new SkinConstraintViewInflater())          // ConstraintLayout support          [selectable]
            .addInflater(new SkinCardViewInflater())                // CardView v7 support               [selectable]
            .setSkinStatusBarColorEnable(false)                     // Disable statusBarColor skin support,default true   [selectable]
            .setSkinWindowBackgroundEnable(false)                   // Disable windowBackground skin support,default true [selectable]
            .loadSkin();
}

Load Skin

// Load the specified skin
SkinCompatManager.getInstance().loadSkin("new.skin"[, SkinLoaderListener], int strategy);

// restore default skin
SkinCompatManager.getInstance().restoreDefaultTheme();

Custom View skin support

  1. Implement the SkinCompatSupportable interface

  2. Apply skin resource in the applySkin method

  3. Resolve the skin resource id in the constructor

Make a skin

BuildIn Skin:

BuildIn Skin,if the skin name is night; Add a resource that needs to be skinned with a suffix _night or prefix night_.

if the default resource is R.color.windowBackgroundColor, then you can add a resource R.color.windowBackgroundColor_night

load buildIn skin:

SkinCompatManager.getInstance().loadSkin("night", SkinCompatManager.SKIN_LOADER_STRATEGY_BUILD_IN); // load by suffix
SkinCompatManager.getInstance().loadSkin("night", SkinCompatManager.SKIN_LOADER_STRATEGY_PREFIX_BUILD_IN); // load by prefix

Plug-in Skin:

New Android Application Project

Put the skin resources into the res directory

If the original window background is

colors.xml

<color name="background">#ffffff</color>

for night-mode you can add this in the skin-night project

colors.xml

<color name="background">#000000</color>

Generated apk is the skin package

You can rename night.apk to night.skin by yourself.

Load plug-in skin package

You can put the skin package into the assets/skins directory.

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

Or you can customize the loading strategy:

For example:

Inherit from SkinSDCardLoader,Override the getSkinPathgetType methods。

public class CustomSDCardLoader extends SkinSDCardLoader {
    public static final int SKIN_LOADER_STRATEGY_SDCARD = Integer.MAX_VALUE;

    @Override
    protected String getSkinPath(Context context, String skinName) {
        return new File(SkinFileUtils.getSkinDir(context), skinName).getAbsolutePath();
    }

    @Override
    public int getType() {
        return SKIN_LOADER_STRATEGY_SDCARD;
    }
}

Register this strategy in Application's onCreate

SkinCompatManager.withoutActivity(this).addStrategy(new CustomSDCardLoader());

Use this strategy to load skin:

SkinCompatManager.getInstance().loadSkin("night.skin", null, CustomSDCardLoader.SKIN_LOADER_STRATEGY_SDCARD);

Who use it

icon name description
sohu newsclient lite
voice note
qoo app
dwnews

About Author

Pengfeng Wang(王鹏锋)

email: ximsfei@gmail.com

About

Android-skin-support is an easy to use dynamic skin framework for Android, Only one line of code to integrate it.一款用心去做的Android 换肤框架, 极低的学习成本, 极好的用户体验. 一行代码就可以实现换肤, 你值得拥有!!!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 99.9%
  • Shell 0.1%