package skin.support.app;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.LayoutInflaterCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import skin.support.SkinCompatManager;
import skin.support.animator.Action;
import skin.support.animator.SingleAnimator.AnimatorConfig;
import skin.support.animator.SingleAnimator.AnimatorManager;
import skin.support.animator.SingleAnimator.ViewAnimatorType;
import skin.support.animator.activityAnimator.SkinActivityAnimator;
import skin.support.observe.SkinObservable;
import skin.support.observe.SkinObserver;
/**
* Created by ximsfei on 17-1-8.
*/
public class SkinCompatActivity extends AppCompatActivity implements SkinObserver {
private SkinCompatDelegate mSkinDelegate;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
if (needAnimator()) {
AnimatorManager.setConfig(new AnimatorConfig.Builder()
.textviewVisibleAnimationType(ViewAnimatorType.AlphaHideAnimator)
.textviewTextAnimationType(ViewAnimatorType.AlphaUpdateAnimator)
.imageviewVisibleAnimationType(ViewAnimatorType.AlphaHideAnimator)
.build());
}
LayoutInflaterCompat.setFactory(getLayoutInflater(), getSkinDelegate());
super.onCreate(savedInstanceState);
}
@NonNull
public SkinCompatDelegate getSkinDelegate() {
if (mSkinDelegate == null) {
mSkinDelegate = SkinCompatDelegate.create(this);
}
return mSkinDelegate;
}
@Override
protected void onResume() {
super.onResume();
SkinCompatManager.getInstance().addObserver(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
SkinCompatManager.getInstance().deleteObserver(this);
}
@Override
public void updateSkin(SkinObservable observable, Object o) {
View rootView = findViewById(android.R.id.content);
SkinActivityAnimator.updateSkin(rootView, new Action() {
@Override
public void action() {
getSkinDelegate().applySkin();
}
});
}
protected void setAnimatorConfig(AnimatorConfig animatorConfig) {
AnimatorManager.setConfig(animatorConfig);
}
protected boolean needAnimator() {
return false;
}
}