ximsfei / Android-skin-support

Android-skin-support is an easy dynamic skin framework to use for Android, Only one line of code to integrate it. Android 换肤框架, 极低的学习成本, 极好的用户体验. "一行"代码就可以实现换肤, 你值得拥有!!!
MIT License
6.35k stars 1.08k forks source link

Presentation 不支持换肤 #443

Open yanguv opened 3 years ago

yanguv commented 3 years ago

Presentation 如何支持换肤

weizai commented 2 years ago

写了个demo测试了下,presentation可以支持的, 需要扩展下,参考skin.support.app.SkinCompatActivity的写法

public class YourPresentation extends Presentation implements SkinObserver { private SkinCompatDelegate mSkinDelegate;

@Override
protected void onCreate(Bundle savedInstanceState) {
    LayoutInflaterCompat.setFactory(getLayoutInflater(), getSkinDelegate());
    super.onCreate(savedInstanceState);
}

@NonNull
public SkinCompatDelegate getSkinDelegate() {
    if (mSkinDelegate == null) {
        mSkinDelegate = SkinCompatDelegate.create(getContext());
    }
    return mSkinDelegate;
}

public YourPresentation(Context outerContext, Display display) {
    super(outerContext, display);
}

@Override
protected void onStart() {
    super.onStart();
    SkinCompatManager.getInstance().addObserver(this);
}

@Override
protected void onStop() {
    super.onStop();
    SkinCompatManager.getInstance().deleteObserver(this);
}

@Override
public void updateSkin(SkinObservable observable, Object o) {
    getSkinDelegate().applySkin();
}

}