package com.forfan.bigbang.component.activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.CardView;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.SeekBar;
import android.widget.TextView;
import com.flask.colorpicker.ColorPickerView;
import com.flask.colorpicker.OnColorSelectedListener;
import com.flask.colorpicker.builder.ColorPickerClickListener;
import com.flask.colorpicker.builder.ColorPickerDialogBuilder;
import com.forfan.bigbang.R;
import com.forfan.bigbang.baseCard.DividerItemDecoration;
import com.forfan.bigbang.component.activity.share.ShareAppManagerActivity;
import com.forfan.bigbang.component.base.BaseActivity;
import com.forfan.bigbang.util.ConstantUtil;
import com.forfan.bigbang.util.UrlCountUtil;
import com.forfan.bigbang.util.ViewUtil;
import com.forfan.bigbang.view.BigBangLayout;
import com.forfan.bigbang.view.BigBangLayoutWrapper;
import com.shang.commonjar.contentProvider.SPHelper;
import com.shang.utils.StatusBarCompat;
/**
* Created by penglu on 2016/11/9.
*/
public class SettingBigBangActivity extends BaseActivity {
private static final int BIGBANG_BACKGROUND_COLOR_ARRAY_RES=R.array.bigbang_background_color;
private static final int MIN_TEXT_SIZE = 8;
private static final int MAX_TEXT_SIZE = 25;
private static final int MIN_LINE_MARGIN = (int) ViewUtil.dp2px(0);
private static final int MAX_LINE_MARGIN = (int) ViewUtil.dp2px(25);
private static final int MIN_ITEM_MARGIN = (int) ViewUtil.dp2px(0);
private static final int MAX_ITEM_MARGIN = (int) ViewUtil.dp2px(20);
private static final int MIN_ITEM_PADDING = (int) ViewUtil.dp2px(2);
private static final int MAX_ITEM_PADDING = (int) ViewUtil.dp2px(25);
private CardView cardView;
private BigBangLayoutWrapper mBigBangLayoutWrap;
private BigBangLayout mBigBangLayout;
private SeekBar mTextSizeSeekBar;
private SeekBar mLineMarginSeekBar;
private SeekBar mItemMarginSeekBar;
private SeekBar mItemPaddingSeekBar;
private TextView textSize, lineMargin, itemMargin,itemPadding;
private TextView bigbangAlpha;
private SeekBar mBigbangAlphaSeekBar;
private CheckBox isFullScreen;
private CheckBox isStickHeader;
private CheckBox isDefaultLocal;
private CheckBox autoAddBlanks;
private CheckBox isBlankSymbol;
private RecyclerView backgroundRV;
private int[] bigbangBackgroungColors;
private int lastPickedColor;//只存rgb
private int alpha;//只存alpha,0-100
private CheckBox isStickSharebar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting_bigbang);
StatusBarCompat.setupStatusBarView(this, (ViewGroup) getWindow().getDecorView(), true, R.color.colorPrimary);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(R.string.setting_bigbang);
mBigBangLayout = (BigBangLayout) findViewById(R.id.bigbang);
mBigBangLayoutWrap = (BigBangLayoutWrapper) findViewById(R.id.bigbang_wrap);
cardView = (CardView) findViewById(R.id.bigbang_wraper);
mTextSizeSeekBar = (SeekBar) findViewById(R.id.set_text_size);
mLineMarginSeekBar = (SeekBar) findViewById(R.id.set_line_margin);
mItemMarginSeekBar = (SeekBar) findViewById(R.id.set_item_margin);
mItemPaddingSeekBar = (SeekBar) findViewById(R.id.set_item_padding);
mBigbangAlphaSeekBar = (SeekBar) findViewById(R.id.set_bigbang_alpha);
textSize = (TextView) findViewById(R.id.text_size);
lineMargin = (TextView) findViewById(R.id.line_margin);
itemMargin = (TextView) findViewById(R.id.item_margin);
itemPadding = (TextView) findViewById(R.id.item_padding);
bigbangAlpha = (TextView) findViewById(R.id.bigbang_alpha);
backgroundRV= (RecyclerView) findViewById(R.id.bigbang_background);
isFullScreen= (CheckBox) findViewById(R.id.is_full_screen);
isStickHeader= (CheckBox) findViewById(R.id.is_stick_header);
isStickSharebar= (CheckBox) findViewById(R.id.is_stick_sharebar);
isDefaultLocal = (CheckBox) findViewById(R.id.is_default_local);
autoAddBlanks = (CheckBox) findViewById(R.id.auto_add_blanks);
isBlankSymbol = (CheckBox) findViewById(R.id.is_blank_symbol);
mTextSizeSeekBar.setMax(MAX_TEXT_SIZE - MIN_TEXT_SIZE);
mLineMarginSeekBar.setMax(MAX_LINE_MARGIN - MIN_LINE_MARGIN);
mItemMarginSeekBar.setMax(MAX_ITEM_MARGIN - MIN_ITEM_MARGIN);
mItemPaddingSeekBar.setMax(MAX_ITEM_PADDING - MIN_ITEM_PADDING);
mItemMarginSeekBar.setMax(100);
findViewById(R.id.setting_share_apps).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(SettingBigBangActivity.this, ShareAppManagerActivity.class);
startActivity(intent);
}
});
mTextSizeSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int value = (int) (MIN_TEXT_SIZE + progress);
mBigBangLayout.setTextSize(value);
textSize.setText(getString(R.string.setting_text_size) + value);
SPHelper.save(ConstantUtil.TEXT_SIZE, value);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_TEXT_SIZE,value+"");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
mLineMarginSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int value = (int) (MIN_LINE_MARGIN + progress);
mBigBangLayout.setLineSpace(value);
lineMargin.setText(getString(R.string.setting_line_margin) + value);
SPHelper.save(ConstantUtil.LINE_MARGIN, value);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_LINE_MARGIN,value+"");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
mItemMarginSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int value = (int) (MIN_ITEM_MARGIN + progress);
mBigBangLayout.setItemSpace(value);
itemMargin.setText(getString(R.string.setting_item_margin) + value);
SPHelper.save(ConstantUtil.ITEM_MARGIN, value);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_ITEM_MARGIN,value+"");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
mItemPaddingSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int value = (int) (MIN_ITEM_PADDING + progress);
mBigBangLayout.setTextPadding(value);
itemPadding.setText(getString(R.string.setting_item_padding) + value);
SPHelper.save(ConstantUtil.ITEM_PADDING, value);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_ITEM_PADDING,value+"");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
mBigbangAlphaSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int value = (int) ( progress);
// mBigBangLayoutWrap.setBackgroundColorWithAlpha(lastPickedColor,value);
cardView.setCardBackgroundColor(Color.argb((int) ((alpha / 100.0f) * 255), Color.red(lastPickedColor), Color.green(lastPickedColor), Color.blue(lastPickedColor)));
bigbangAlpha.setText(getString(R.string.setting_alpha_percent) + value +"%");
SPHelper.save(ConstantUtil.BIGBANG_ALPHA, value);
alpha=value;
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_ALPHA,value+"");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
isFullScreen.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SPHelper.save(ConstantUtil.IS_FULL_SCREEN,isChecked);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_FULL_SCREEN,isChecked+"");
}
});
isStickHeader.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SPHelper.save(ConstantUtil.IS_STICK_HEADER,isChecked);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_STICK_HEAD,isChecked+"");
mBigBangLayoutWrap.setStickHeader(isChecked);
}
});
isDefaultLocal.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SPHelper.save(ConstantUtil.DEFAULT_LOCAL,isChecked);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_DEFAULT_LOCAL,isChecked+"");
}
});
autoAddBlanks.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SPHelper.save(ConstantUtil.AUTO_ADD_BLANKS,isChecked);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_ADD_BLANKS,isChecked+"");
}
});
isBlankSymbol.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SPHelper.save(ConstantUtil.TREAT_BLANKS_AS_SYMBOL,isChecked);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_BLANKS_IS_SYMBOL,isChecked+"");
}
});
isStickSharebar.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SPHelper.save(ConstantUtil.IS_STICK_SHAREBAR,isChecked);
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_STICK_SHAREBAR,isChecked+"");
}
});
int text = SPHelper.getInt(ConstantUtil.TEXT_SIZE, ConstantUtil.DEFAULT_TEXT_SIZE);
int line = SPHelper.getInt(ConstantUtil.LINE_MARGIN, ConstantUtil.DEFAULT_LINE_MARGIN);
int item = SPHelper.getInt(ConstantUtil.ITEM_MARGIN, ConstantUtil.DEFAULT_ITEM_MARGIN);
int padding = SPHelper.getInt(ConstantUtil.ITEM_PADDING, (int) ViewUtil.dp2px(ConstantUtil.DEFAULT_ITEM_PADDING));
alpha = SPHelper.getInt(ConstantUtil.BIGBANG_ALPHA, 100);
lastPickedColor = SPHelper.getInt(ConstantUtil.BIGBANG_DIY_BG_COLOR, Color.parseColor("#94a4bb"));
boolean fullScreen=SPHelper.getBoolean(ConstantUtil.IS_FULL_SCREEN,false);
isFullScreen.setChecked(fullScreen);
boolean stickHeader=SPHelper.getBoolean(ConstantUtil.IS_STICK_HEADER,false);
isStickHeader.setChecked(stickHeader);
boolean stickSharebar=SPHelper.getBoolean(ConstantUtil.IS_STICK_SHAREBAR,true);
isStickSharebar.setChecked(stickSharebar);
boolean remainSymbol = SPHelper.getBoolean(ConstantUtil.REMAIN_SYMBOL, true);
boolean defaultLocal = SPHelper.getBoolean(ConstantUtil.DEFAULT_LOCAL, false);
boolean addBlanks = SPHelper.getBoolean(ConstantUtil.AUTO_ADD_BLANKS, false);
boolean blankIsSymbol = SPHelper.getBoolean(ConstantUtil.TREAT_BLANKS_AS_SYMBOL, true);
mTextSizeSeekBar.setProgress((int) ((MIN_TEXT_SIZE)));
mLineMarginSeekBar.setProgress((int) ((MIN_LINE_MARGIN)));
mItemMarginSeekBar.setProgress((int) ((MIN_ITEM_MARGIN)));
mItemPaddingSeekBar.setProgress((int) ((MIN_ITEM_PADDING)));
mTextSizeSeekBar.setProgress((int) ((MAX_TEXT_SIZE)));
mLineMarginSeekBar.setProgress((int) ((MAX_LINE_MARGIN)));
mItemMarginSeekBar.setProgress((int) ((MAX_ITEM_MARGIN)));
mItemPaddingSeekBar.setProgress((int) ((MIN_ITEM_PADDING)));
mTextSizeSeekBar.setProgress((int) ((text - MIN_TEXT_SIZE)));
mLineMarginSeekBar.setProgress((int) ((line - MIN_LINE_MARGIN)));
mItemMarginSeekBar.setProgress((int) ((item - MIN_ITEM_MARGIN)));
mItemPaddingSeekBar.setProgress((int) ((padding-MIN_ITEM_PADDING)));
bigbangAlpha.setText(getString(R.string.setting_alpha_percent) + alpha +"%");
// mBigBangLayoutWrap.setBackgroundColorWithAlpha(lastPickedColor,alpha);
cardView.setCardBackgroundColor(Color.argb((int) ((alpha / 100.0f) * 255), Color.red(lastPickedColor), Color.green(lastPickedColor), Color.blue(lastPickedColor)));
mBigbangAlphaSeekBar.setProgress(alpha);
mBigBangLayoutWrap.setStickHeader(stickHeader);
mBigBangLayoutWrap.setShowSymbol(remainSymbol);
mBigBangLayoutWrap.setShowSection(SPHelper.getBoolean(ConstantUtil.REMAIN_SECTION, false));
mBigBangLayoutWrap.setActionListener(bigBangActionListener);
String[] txts = new String[]{"BigBang", "可以", "进行","文本", "分词", "。","\n",
"也","支持", "复制", "翻译", "和", "调整","…"};
for (String t : txts) {
mBigBangLayout.addTextItem(t);
}
applyColor(lastPickedColor);
isDefaultLocal.setChecked(defaultLocal);
autoAddBlanks.setChecked(addBlanks);
isBlankSymbol.setChecked(blankIsSymbol);
bigbangBackgroungColors=getResources().getIntArray(BIGBANG_BACKGROUND_COLOR_ARRAY_RES);
backgroundRV.setLayoutManager(new GridLayoutManager(this,4));
backgroundRV.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.GRID_LIST));
backgroundRV.setAdapter(backgroundColorAdapter);
mBigBangLayoutWrap.onSwitchType(defaultLocal);
}
private RecyclerView.Adapter backgroundColorAdapter=new RecyclerView.Adapter() {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ColorVIewHolder(new TextView(SettingBigBangActivity.this));
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
TextView view= (TextView) holder.itemView;
view.setMinimumHeight((int) ViewUtil.dp2px(40));
if (position==bigbangBackgroungColors.length){
view.setBackgroundColor(getResources().getColor(R.color.white));
view.setText(R.string.set_background_myself);
view.setTextColor(getResources().getColor(R.color.black));
view.setTextSize(14);
view.setGravity(Gravity.CENTER);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showColorPickDialog();
UrlCountUtil.onEvent(UrlCountUtil.CLICK_SET_BB_BGCOLOR_DIY);
}
});
}else {
view.setText("");
view.setBackgroundColor(bigbangBackgroungColors[position]);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (bigbangBackgroungColors.length>position) {
applyColor(bigbangBackgroungColors[position]);
lastPickedColor=bigbangBackgroungColors[position];
SPHelper.save(ConstantUtil.BIGBANG_DIY_BG_COLOR,bigbangBackgroungColors[position] );
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_BGCOLOR,lastPickedColor+"");
}
}
});
}
}
@Override
public int getItemCount() {
return bigbangBackgroungColors.length+1;
}
class ColorVIewHolder extends RecyclerView.ViewHolder{
public ColorVIewHolder(View itemView) {
super(itemView);
}
}
};
private void applyColor(int color){
// mBigBangLayoutWrap.setBackgroundColorWithAlpha(color,alpha);
cardView.setCardBackgroundColor(Color.argb((int) ((alpha / 100.0f) * 255), Color.red(color), Color.green(color), Color.blue(color)));
}
private void applyColor(int color,int alpha){
// mBigBangLayoutWrap.setBackgroundColorWithAlpha(color,alpha);
cardView.setCardBackgroundColor(Color.argb((int) ((alpha / 100.0f) * 255), Color.red(color), Color.green(color), Color.blue(color)));
}
private void showColorPickDialog(){
ColorPickerDialogBuilder
.with(this)
.setTitle(R.string.set_background_myself)
.initialColor(lastPickedColor)
.wheelType(ColorPickerView.WHEEL_TYPE.FLOWER)
.density(12)
.setOnColorSelectedListener(new OnColorSelectedListener() {
@Override
public void onColorSelected(int selectedColor) {
applyColor(Color.rgb(Color.red(selectedColor), Color.green(selectedColor), Color.blue(selectedColor)),(int) (Color.alpha(selectedColor)*100.0/255));
}
})
.setPositiveButton(R.string.confirm, new ColorPickerClickListener() {
@Override
public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) {
lastPickedColor=Color.rgb(Color.red(selectedColor), Color.green(selectedColor), Color.blue(selectedColor));
alpha= (int) (Color.alpha(selectedColor)*100.0/255);
applyColor(Color.rgb(Color.red(selectedColor), Color.green(selectedColor), Color.blue(selectedColor)));
SPHelper.save(ConstantUtil.BIGBANG_DIY_BG_COLOR,lastPickedColor );
UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_BGCOLOR,lastPickedColor+"");
mBigbangAlphaSeekBar.setProgress(alpha);
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
applyColor(lastPickedColor);
}
})
.showColorEdit(true)
.setColorEditTextColor(ContextCompat.getColor(this, android.R.color.holo_blue_bright))
.build()
.show();
}
BigBangLayoutWrapper.ActionListener bigBangActionListener = new BigBangLayoutWrapper.ActionListener() {
@Override
public void onSelected(String text) {
}
@Override
public void onSearch(String text) {
}
@Override
public void onShare(String text) {
}
@Override
public void onCopy(String text) {
}
@Override
public void onTrans(String text) {
}
@Override
public void onDrag() {
UrlCountUtil.onEvent(UrlCountUtil.CLICK_BIGBANG_DRAG);
}
@Override
public void onSwitchType(boolean isLocal) {
//
UrlCountUtil.onEvent(UrlCountUtil.CLICK_BIGBANG_SWITCH_TYPE);
mBigBangLayout.reset();
if (isLocal) {
String[] txts = new String[]{"BigBang", "可","以", "进","行","文","本", "分","词", "。","\n",
"也","支","持", "复","制", "翻","译", "和", "调","整","…"};
for (String t : txts) {
mBigBangLayout.addTextItem(t);
}
} else {
String[] txts = new String[]{"BigBang", "可以", "进行","文本", "分词", "。","\n",
"也","支持", "复制", "翻译", "和", "调整","…"};
for (String t : txts) {
mBigBangLayout.addTextItem(t);
}
}
}
@Override
public void onSwitchSymbol(boolean isShow) {
SPHelper.save(ConstantUtil.REMAIN_SYMBOL, isShow);
UrlCountUtil.onEvent(UrlCountUtil.CLICK_BIGBANG_REMAIN_SYMBOL);
}
@Override
public void onSwitchSection(boolean isShow) {
SPHelper.save(ConstantUtil.REMAIN_SECTION, isShow);
UrlCountUtil.onEvent(UrlCountUtil.CLICK_BIGBANG_REMAIN_SECTION);
}
@Override
public void onDragSelection() {
}
};
}