package com.novelbook.android.dialog; import android.app.Dialog; import android.content.Context; import android.graphics.Typeface; import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.widget.SeekBar; import android.widget.TextView; import com.novelbook.android.utils.CommonUtil; import com.novelbook.android.utils.Config; import com.novelbook.android.R; import com.novelbook.android.utils.DisplayUtils; import com.novelbook.android.view.CircleImageView; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class SettingDialog extends Dialog { @BindView(R.id.tv_dark) TextView tv_dark; @BindView(R.id.sb_brightness) SeekBar sb_brightness; @BindView(R.id.tv_bright) TextView tv_bright; @BindView(R.id.tv_xitong) TextView tv_xitong; @BindView(R.id.tv_subtract) TextView tv_subtract; @BindView(R.id.tv_size) TextView tv_size; @BindView(R.id.tv_add) TextView tv_add; @BindView(R.id.tv_qihei) TextView tv_qihei; @BindView(R.id.tv_default) TextView tv_default; @BindView(R.id.iv_bg_default) CircleImageView iv_bg_default; @BindView(R.id.iv_bg_1) CircleImageView iv_bg1; @BindView(R.id.iv_bg_2) CircleImageView iv_bg2; @BindView(R.id.iv_bg_3) CircleImageView iv_bg3; @BindView(R.id.iv_bg_4) CircleImageView iv_bg4; @BindView(R.id.tv_size_default) TextView tv_size_default; @BindView(R.id.tv_fzxinghei) TextView tv_fzxinghei; @BindView(R.id.tv_fzkatong) TextView tv_fzkatong; @BindView(R.id.tv_bysong) TextView tv_bysong; @BindView(R.id.tv_lhsize) TextView tv_lineSpace; @BindView(R.id.tv_lhsize_default) TextView tv_lhsize_default; private Config config; private Boolean isSystem; private SettingListener mSettingListener; private int FONT_SIZE_MIN; private int FONT_SIZE_MAX; private int currentFontSize; private int LINE_SPACE_MIN; private int LINE_SPACE_MAX; private int currentLineSpace; Context mContext; private SettingDialog(Context context, boolean flag, OnCancelListener listener) { super(context, flag, listener); mContext =context; } public SettingDialog(Context context) { this(context, R.style.setting_dialog); } public SettingDialog(Context context, int themeResId) { super(context, themeResId); mContext=context; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setGravity(Gravity.BOTTOM); setContentView(R.layout.zdialog_setting); // 初始化View注入 ButterKnife.bind(this); WindowManager m = getWindow().getWindowManager(); Display d = m.getDefaultDisplay(); WindowManager.LayoutParams p = getWindow().getAttributes(); p.width = d.getWidth(); // p.height = CommonUtil.getDpi(mContext); getWindow().setAttributes(p); FONT_SIZE_MIN = (int) getContext().getResources().getDimension(R.dimen.reading_min_text_size); FONT_SIZE_MAX = (int) getContext().getResources().getDimension(R.dimen.reading_max_text_size); LINE_SPACE_MAX =60; LINE_SPACE_MIN =10; config = Config.getInstance(); //初始化亮度 isSystem = config.isSystemLight(); setTextViewSelect(tv_xitong, isSystem); setBrightness(config.getLight()); //初始化字体大小 currentFontSize = (int) config.getFontSize(); tv_size.setText(currentFontSize + ""); setTextViewSelect(tv_size_default, currentFontSize ==60); //初始化行间距 currentLineSpace =(int) config.getLineSpace(); tv_lineSpace.setText(currentLineSpace+""); setTextViewSelect(tv_lhsize_default, currentLineSpace==45); //初始化字体 tv_default.setTypeface(config.getTypeface(Config.FONTTYPE_DEFAULT)); tv_qihei.setTypeface(config.getTypeface(Config.FONTTYPE_QIHEI)); // tv_fzxinghei.setTypeface(config.getTypeface(Config.FONTTYPE_FZXINGHEI)); // tv_fzkatong.setTypeface(config.getTypeface(Config.FONTTYPE_FZKATONG)); // tv_bysong.setTypeface(config.getTypeface(Config.FONTTYPE_BYSONG)); // tv_xinshou.setTypeface(config.getTypeface(Config.FONTTYPE_XINSHOU)); // tv_wawa.setTypeface(config.getTypeface(Config.FONTTYPE_WAWA)); selectTypeface(config.getTypefacePath()); selectBg(config.getBookBgType()); sb_brightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (progress > 10) { changeBright(false, progress); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } //选择背景 private void selectBg(int type) { switch (type) { case Config.BOOK_BG_DEFAULT: iv_bg_default.setBorderWidth(DisplayUtils.dp2px(getContext(), 2)); iv_bg1.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg2.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg3.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg4.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); break; case Config.BOOK_BG_1: iv_bg_default.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg1.setBorderWidth(DisplayUtils.dp2px(getContext(), 2)); iv_bg2.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg3.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg4.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); break; case Config.BOOK_BG_2: iv_bg_default.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg1.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg2.setBorderWidth(DisplayUtils.dp2px(getContext(), 2)); iv_bg3.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg4.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); break; case Config.BOOK_BG_3: iv_bg_default.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg1.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg2.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg3.setBorderWidth(DisplayUtils.dp2px(getContext(), 2)); iv_bg4.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); break; case Config.BOOK_BG_4: iv_bg_default.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg1.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg2.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg3.setBorderWidth(DisplayUtils.dp2px(getContext(), 0)); iv_bg4.setBorderWidth(DisplayUtils.dp2px(getContext(), 2)); break; } } //设置字体 public void setBookBg(int type) { config.setBookBg(type); if (mSettingListener != null) { mSettingListener.changeBookBg(type); } } //选择字体 private void selectTypeface(String typeface) { if (typeface.equals(Config.FONTTYPE_DEFAULT)) { setTextViewSelect(tv_default, true); setTextViewSelect(tv_qihei, false); setTextViewSelect(tv_fzxinghei, false); setTextViewSelect(tv_fzkatong, false); setTextViewSelect(tv_bysong, false); // setTextViewSelect(tv_xinshou, false); // setTextViewSelect(tv_wawa, false); } else if (typeface.equals(Config.FONTTYPE_QIHEI)) { setTextViewSelect(tv_default, false); setTextViewSelect(tv_qihei, true); setTextViewSelect(tv_fzxinghei, false); setTextViewSelect(tv_fzkatong, false); setTextViewSelect(tv_bysong, false); // setTextViewSelect(tv_xinshou, false); // setTextViewSelect(tv_wawa, false); } else if (typeface.equals(Config.FONTTYPE_FZXINGHEI)) { setTextViewSelect(tv_default, false); setTextViewSelect(tv_qihei, false); setTextViewSelect(tv_fzxinghei, true); setTextViewSelect(tv_fzkatong, false); setTextViewSelect(tv_bysong, false); // setTextViewSelect(tv_xinshou, true); // setTextViewSelect(tv_wawa, false); } else if (typeface.equals(Config.FONTTYPE_FZKATONG)) { setTextViewSelect(tv_default, false); setTextViewSelect(tv_qihei, false); setTextViewSelect(tv_fzxinghei, false); setTextViewSelect(tv_fzkatong, true); setTextViewSelect(tv_bysong, false); // setTextViewSelect(tv_xinshou, false); // setTextViewSelect(tv_wawa, true); } else if (typeface.equals(Config.FONTTYPE_BYSONG)) { setTextViewSelect(tv_default, false); setTextViewSelect(tv_qihei, false); setTextViewSelect(tv_fzxinghei, false); setTextViewSelect(tv_fzkatong, false); setTextViewSelect(tv_bysong, true); // setTextViewSelect(tv_xinshou, false); // setTextViewSelect(tv_wawa, true); } } //设置字体 public void setTypeface(String typeface) { try { config.setTypeface(typeface); Typeface tface = config.getTypeface(typeface); if (mSettingListener != null) { mSettingListener.changeTypeFace(tface); } }catch (Exception e){ Log.e("SettingDialog", "setTypeface: ",e ); } } //设置亮度 public void setBrightness(float brightness) { sb_brightness.setProgress((int) (brightness * 100)); } //设置按钮选择的背景 private void setTextViewSelect(TextView textView, Boolean isSelect) { if (isSelect) { textView.setBackgroundDrawable(getContext().getResources().getDrawable(R.drawable.button_select_bg)); textView.setTextColor(getContext().getResources().getColor(R.color.read_dialog_button_select)); } else { textView.setBackgroundDrawable(getContext().getResources().getDrawable(R.drawable.button_bg)); textView.setTextColor(getContext().getResources().getColor(R.color.white)); } } private void applyCompat() { if (Build.VERSION.SDK_INT < 19) { return; } this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏 } public Boolean isShow() { return isShowing(); } @OnClick({R.id.tv_dark, R.id.tv_bright, R.id.tv_xitong, R.id.tv_subtract, R.id.tv_add, R.id.tv_size_default, R.id.tv_qihei, R.id.tv_fzxinghei, R.id.tv_fzkatong,R.id.tv_bysong, R.id.tv_default, R.id.iv_bg_default, R.id.iv_bg_1, R.id.iv_bg_2, R.id.iv_bg_3, R.id.iv_bg_4,R.id.tv_lhadd,R.id.tv_lhreduct,R.id.tv_lhsize_default}) public void onClick(View view) { switch (view.getId()) { case R.id.tv_dark: break; case R.id.tv_bright: break; case R.id.tv_xitong: isSystem = !isSystem; changeBright(isSystem, sb_brightness.getProgress()); break; case R.id.tv_subtract: subtractFontSize(); break; case R.id.tv_add: addFontSize(); break; case R.id.tv_size_default: defaultFontSize(); break; case R.id.tv_qihei: selectTypeface(Config.FONTTYPE_QIHEI); setTypeface(Config.FONTTYPE_QIHEI); break; case R.id.tv_fzxinghei: selectTypeface(Config.FONTTYPE_QIHEI); setTypeface(Config.FONTTYPE_QIHEI); // selectTypeface(Config.FONTTYPE_FZXINGHEI); // setTypeface(Config.FONTTYPE_FZXINGHEI); break; case R.id.tv_fzkatong: selectTypeface(Config.FONTTYPE_QIHEI); setTypeface(Config.FONTTYPE_QIHEI); //selectTypeface(Config.FONTTYPE_FZKATONG); //setTypeface(Config.FONTTYPE_FZKATONG); break; case R.id.tv_bysong: // selectTypeface(Config.FONTTYPE_BYSONG); // setTypeface(Config.FONTTYPE_BYSONG); selectTypeface(Config.FONTTYPE_QIHEI); setTypeface(Config.FONTTYPE_QIHEI); break; // case R.id.tv_xinshou: // selectTypeface(Config.FONTTYPE_XINSHOU); // setTypeface(Config.FONTTYPE_XINSHOU); // break; // case R.id.tv_wawa: // selectTypeface(Config.FONTTYPE_WAWA); // setTypeface(Config.FONTTYPE_WAWA); // break; case R.id.tv_default: selectTypeface(Config.FONTTYPE_DEFAULT); setTypeface(Config.FONTTYPE_DEFAULT); break; case R.id.iv_bg_default: setBookBg(Config.BOOK_BG_DEFAULT); selectBg(Config.BOOK_BG_DEFAULT); config.setDayOrNight(false); break; case R.id.iv_bg_1: setBookBg(Config.BOOK_BG_1); selectBg(Config.BOOK_BG_1); config.setDayOrNight(false); break; case R.id.iv_bg_2: setBookBg(Config.BOOK_BG_2); selectBg(Config.BOOK_BG_2); config.setDayOrNight(false); break; case R.id.iv_bg_3: setBookBg(Config.BOOK_BG_3); selectBg(Config.BOOK_BG_3); config.setDayOrNight(false); break; case R.id.iv_bg_4: setBookBg(Config.BOOK_BG_4); selectBg(Config.BOOK_BG_4); config.setDayOrNight(false); break; case R.id.tv_lhadd: addLineSpace(); break; case R.id.tv_lhreduct: subtractLineSpace(); break; case R.id.tv_lhsize_default: defaultLineSpace(); break; } } //变大行间距 private void addLineSpace() { if (currentLineSpace < LINE_SPACE_MAX) { currentLineSpace += 1; tv_lineSpace.setText(currentLineSpace + ""); setTextViewSelect(tv_lhsize_default,false); config.setLineSpace(currentLineSpace); if (mSettingListener != null) { mSettingListener.changeLineHeight(currentLineSpace); } } } //默认行间距 private void defaultLineSpace() { currentLineSpace = (int) getContext().getResources().getDimension(R.dimen.reading_line_spacing); tv_lineSpace.setText(currentLineSpace + ""); setTextViewSelect(tv_lhsize_default,true); config.setLineSpace(currentLineSpace); if (mSettingListener != null) { mSettingListener.changeLineHeight(currentLineSpace); } } //变小行间距 private void subtractLineSpace() { if (currentLineSpace > LINE_SPACE_MIN) { currentLineSpace -= 1; setTextViewSelect(tv_lhsize_default,false); tv_lineSpace.setText(currentLineSpace + ""); config.setLineSpace(currentLineSpace); if (mSettingListener != null) { mSettingListener.changeLineHeight(currentLineSpace); } } } //变大书本字体 private void addFontSize() { if (currentFontSize < FONT_SIZE_MAX) { currentFontSize += 1; tv_size.setText(currentFontSize + ""); setTextViewSelect(tv_size_default,false); config.setFontSize(currentFontSize); if (mSettingListener != null) { mSettingListener.changeFontSize(currentFontSize); } } } private void defaultFontSize() { currentFontSize = (int) getContext().getResources().getDimension(R.dimen.reading_default_text_size); tv_size.setText(currentFontSize + ""); setTextViewSelect(tv_size_default,true); config.setFontSize(currentFontSize); if (mSettingListener != null) { mSettingListener.changeFontSize(currentFontSize); } } //变小书本字体 private void subtractFontSize() { if (currentFontSize > FONT_SIZE_MIN) { currentFontSize -= 1; setTextViewSelect(tv_size_default,false); tv_size.setText(currentFontSize + ""); config.setFontSize(currentFontSize); if (mSettingListener != null) { mSettingListener.changeFontSize(currentFontSize); } } } //改变亮度 public void changeBright(Boolean isSystem, int brightness) { float light = (float) (brightness / 100.0); setTextViewSelect(tv_xitong, isSystem); config.setSystemLight(isSystem); config.setLight(light); if (mSettingListener != null) { mSettingListener.changeSystemBright(isSystem, light); } } public void setSettingListener(SettingListener settingListener) { this.mSettingListener = settingListener; } public interface SettingListener { void changeSystemBright(Boolean isSystem, float brightness); void changeFontSize(int fontSize); void changeTypeFace(Typeface typeface); void changeBookBg(int type); void changeLineHeight(int lineHeight); } }