package com.ximsfei.skindemo.ui;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.ximsfei.skindemo.R;
import com.ximsfei.skindemo.databinding.ActivitySkinLibBinding;
import com.ximsfei.skindemo.databinding.HeaderSkinLibBinding;
import com.ximsfei.skindemo.ui.adapter.SkinLibAdapter;
import com.ximsfei.skindemo.ui.base.BaseActivity;
import com.ximsfei.skindemo.utils.SPUtils;
import skin.support.SkinCompatManager;
import static com.ximsfei.skindemo.DataManager.SKIN_LIBS;
/**
* Created by ximsfei on 2017/1/16.
*/
public class SkinLibActivity extends BaseActivity<ActivitySkinLibBinding> {
private HeaderSkinLibBinding mHeaderBinding;
private SkinLibAdapter mAdapter;
private int mCurSkin = -1;
@Override
protected int getLayoutResId() {
return R.layout.activity_skin_lib;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initToolbar(mDataBinding.toolBar);
mHeaderBinding = DataBindingUtil.inflate(getLayoutInflater(), R.layout.header_skin_lib, null, false);
initRecyclerView();
initHeaderView();
}
private void initRecyclerView() {
mDataBinding.recyclerView.setPullRefreshEnabled(false);
mDataBinding.recyclerView.setLoadingMoreEnabled(true);
mDataBinding.recyclerView.addHeaderView(mHeaderBinding.getRoot());
mDataBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
mDataBinding.recyclerView.setNestedScrollingEnabled(false);
mDataBinding.recyclerView.setHasFixedSize(false);
mDataBinding.recyclerView.setItemAnimator(new DefaultItemAnimator());
mAdapter = new SkinLibAdapter();
mDataBinding.recyclerView.setAdapter(mAdapter);
}
private void initHeaderView() {
mHeaderBinding.red.name.setText("官方红");
mHeaderBinding.red.preview.setAspectRatio(4 * 1.0f / 3);
mHeaderBinding.red.preview.setImageResource(R.drawable.skin_red);
mHeaderBinding.red.getRoot().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SkinCompatManager.getInstance().restoreDefaultTheme();
SPUtils.getInstance().setNightMode(false).commitEditor();
showSkinIndicator(0);
}
});
mHeaderBinding.white.name.setText("官方白");
mHeaderBinding.white.preview.setAspectRatio(4 * 1.0f / 3);
mHeaderBinding.white.preview.setImageResource(R.drawable.skin_white);
mHeaderBinding.white.getRoot().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SkinCompatManager.getInstance().loadSkin("white.skin", new SkinCompatManager.SkinLoaderListener() {
@Override
public void onStart() {
}
@Override
public void onSuccess() {
SPUtils.getInstance().setNightMode(false).commitEditor();
showSkinIndicator();
}
@Override
public void onFailed(String s) {
}
});
}
});
// mHeaderBinding.color.getRoot().setVisibility(View.INVISIBLE);
mHeaderBinding.color.name.setText("自选颜色");
mHeaderBinding.color.preview.setAspectRatio(4 * 1.0f / 3);
mHeaderBinding.color.preview.setImageResource(R.drawable.skin_color);
showSkinIndicator();
}
private void showSkinIndicator() {
String curSkinName = SkinCompatManager.getInstance().getCurSkinName();
for (int i = 0; i < SKIN_LIBS.length; i++) {
if (SKIN_LIBS[i].equals(curSkinName)) {
showSkinIndicator(i);
}
}
}
private void showSkinIndicator(int index) {
hideSkinIndicator(mCurSkin);
switch (index) {
case 0:
mHeaderBinding.red.description.setText("使用中");
mHeaderBinding.red.indicator.setVisibility(View.VISIBLE);
mHeaderBinding.red.description.setVisibility(View.VISIBLE);
mCurSkin = 0;
break;
case 1:
mHeaderBinding.white.description.setText("使用中");
mHeaderBinding.white.indicator.setVisibility(View.VISIBLE);
mHeaderBinding.white.description.setVisibility(View.VISIBLE);
mCurSkin = 1;
break;
case 2:
mHeaderBinding.color.description.setText("使用中");
mHeaderBinding.color.indicator.setVisibility(View.VISIBLE);
mHeaderBinding.color.description.setVisibility(View.VISIBLE);
mCurSkin = 2;
break;
}
}
private void hideSkinIndicator(int index) {
mCurSkin = -1;
switch (index) {
case 0:
mHeaderBinding.red.indicator.setVisibility(View.INVISIBLE);
mHeaderBinding.red.description.setVisibility(View.INVISIBLE);
break;
case 1:
mHeaderBinding.white.indicator.setVisibility(View.INVISIBLE);
mHeaderBinding.white.description.setVisibility(View.INVISIBLE);
break;
case 2:
mHeaderBinding.color.indicator.setVisibility(View.INVISIBLE);
mHeaderBinding.color.description.setVisibility(View.INVISIBLE);
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_skin_lib_options, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_manager:
break;
}
return super.onOptionsItemSelected(item);
}
}