pda/zhuike/.svn/pristine/00/00782ef6eb732c34d7e7a93385d...

265 lines
8.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.novelbook.android.dialog;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import com.novelbook.android.utils.Config;
import com.novelbook.android.R;
import com.novelbook.android.view.BookPageWidget;
import java.text.DecimalFormat;
public class ReadSettingDialog implements BaseDialog,View.OnClickListener {
ImageButton btn_return;
ImageButton btn_ight;
ImageButton btn_listener_book;
TextView tv_pre;
SeekBar sb_progress;
TextView tv_next;
TextView tv_directory;
TextView tv_dayornight;
TextView tv_setting;
TextView tv_Progress;
RelativeLayout rl_Progress;
private PopupWindow mPopupWindow,mPopupWindowTop;
private BookPageWidget mBookPageWidget;
private View view,viewTop;
private SettingListener mSettingListener;
private Context mContext;
private Config config;
private Boolean mDayOrNight;
public ReadSettingDialog(BookPageWidget bookPageWidget) {
this.mBookPageWidget = bookPageWidget;
mContext = bookPageWidget.getContext();
LayoutInflater layoutInflater = (LayoutInflater) bookPageWidget.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.zdialog_read_setting, null);
viewTop = layoutInflater.inflate(R.layout.zdialog_read_setting_top, null);
btn_return = (ImageButton) viewTop.findViewById(R.id.btn_return);
btn_ight = (ImageButton) viewTop.findViewById(R.id.btn_light);
btn_listener_book = (ImageButton) viewTop.findViewById(R.id.btn_listener_book);
tv_pre = (TextView) view.findViewById(R.id.tv_pre);
sb_progress = (SeekBar) view.findViewById(R.id.sb_progress);
tv_next = (TextView) view.findViewById(R.id.tv_next);
tv_directory = (TextView) view.findViewById(R.id.tv_directory);
tv_dayornight = (TextView) view.findViewById(R.id.tv_dayornight);
tv_setting = (TextView) view.findViewById(R.id.tv_setting);
tv_Progress = (TextView) view.findViewById(R.id.tv_progress);
rl_Progress = (RelativeLayout) view.findViewById(R.id.rl_progress);
btn_return.setOnClickListener(this);
btn_ight.setOnClickListener(this);
btn_listener_book.setOnClickListener(this);
tv_pre.setOnClickListener(this);
sb_progress.setOnClickListener(this);
tv_next.setOnClickListener(this);
tv_directory.setOnClickListener(this);
tv_dayornight.setOnClickListener(this);
tv_setting.setOnClickListener(this);
tv_Progress.setOnClickListener(this);
rl_Progress.setOnClickListener(this);
mPopupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
mPopupWindowTop = new PopupWindow(viewTop, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setFocusable(true);// menu菜单获得焦点 如果没有获得焦点menu菜单中的控件事件无法响应
mPopupWindow.update();
mPopupWindowTop.setOutsideTouchable(true);
mPopupWindowTop.setBackgroundDrawable(new BitmapDrawable());
mPopupWindowTop.setOutsideTouchable(true);
mPopupWindowTop.setFocusable(true);// menu菜单获得焦点 如果没有获得焦点menu菜单中的控件事件无法响应
mPopupWindowTop.update();
view.setOnTouchListener(new View.OnTouchListener()// 需要设置点击之后取消popupview即使点击外面也可以捕获事件
{
public boolean onTouch(View v, MotionEvent event)
{
if (isShow())
{
dismiss();
}
return false;
}
});
config = Config.getInstance();
sb_progress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
float pro;
// 触发操作,拖动
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
pro = (float) (progress / 10000.0);
showProgress(pro);
}
// 表示进度条刚开始拖动,开始拖动时候触发的操作
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
// 停止拖动时候
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (mSettingListener != null){
mSettingListener.changeProgress(pro);
}
}
});
initDayOrNight();
}
public void initDayOrNight(){
mDayOrNight = config.getDayOrNight();
if (mDayOrNight){
tv_dayornight.setText(mContext.getResources().getString(R.string.read_setting_day));
}else{
tv_dayornight.setText(mContext.getResources().getString(R.string.read_setting_night));
}
}
//改变显示模式
public void changeDayOrNight(){
if (mDayOrNight){
mDayOrNight = false;
tv_dayornight.setText(mContext.getResources().getString(R.string.read_setting_night));
}else{
mDayOrNight = true;
tv_dayornight.setText(mContext.getResources().getString(R.string.read_setting_day));
}
config.setDayOrNight(mDayOrNight);
if (mSettingListener != null) {
mSettingListener.dayorNight(mDayOrNight);
}
}
//显示书本进度
public void showProgress(float progress){
if (rl_Progress.getVisibility() != View.VISIBLE) {
rl_Progress.setVisibility(View.VISIBLE);
}
setProgress(progress);
}
//隐藏书本进度
public void hideProgress(){
rl_Progress.setVisibility(View.GONE);
}
@Override
public void show() {
hideProgress();
mPopupWindowTop.showAtLocation(mBookPageWidget, Gravity.TOP, 0, 0);
mPopupWindow.showAtLocation(mBookPageWidget, Gravity.BOTTOM, 0, 0);
}
private void setProgress(float progress){
DecimalFormat decimalFormat=new DecimalFormat("00.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
String p=decimalFormat.format(progress * 100.0);//format 返回的是字符串
tv_Progress.setText(p + "%");
}
public void setSeekBarProgress(float progress){
sb_progress.setProgress((int) (progress * 10000));
}
@Override
public void dismiss() {
mPopupWindowTop.dismiss();
mPopupWindow.dismiss();
}
@Override
public Boolean isShow() {
return mPopupWindow.isShowing() || mPopupWindowTop.isShowing();
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_return:
if (mSettingListener != null) {
mSettingListener.back();
}
break;
case R.id.btn_light:
break;
case R.id.btn_listener_book:
break;
case R.id.tv_pre:
if (mSettingListener != null) {
mSettingListener.pre();
}
break;
case R.id.sb_progress:
break;
case R.id.tv_next:
if (mSettingListener != null) {
mSettingListener.next();
}
break;
case R.id.tv_directory:
if (mSettingListener != null) {
mSettingListener.directory();
}
break;
case R.id.tv_dayornight:
changeDayOrNight();
break;
case R.id.tv_setting:
if (mSettingListener != null) {
mSettingListener.setting();
}
break;
}
}
public void setSettingListener(SettingListener settingListener) {
this.mSettingListener = settingListener;
}
public interface SettingListener {
void back();
void pre();
void dismiss();
void next();
void directory();
void dayorNight(Boolean isNight);
void setting();
void changeProgress(float progress);
}
}