489 lines
18 KiB
Plaintext
489 lines
18 KiB
Plaintext
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);
|
|
}
|
|
|
|
} |