package com.gh.gamecenter; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; import android.widget.Toast; import com.gh.base.BaseActivity; import com.gh.common.constant.Config; import com.gh.common.util.DialogUtils; import com.gh.common.util.FileUtils; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.eventbus.EBSkip; import com.kyleduo.switchbutton.SwitchButton; import java.io.File; import butterknife.BindView; import de.greenrobot.event.EventBus; /** * 游戏设置页面 * * @author 吕方 * @since 0814 */ public class SettingActivity extends BaseActivity implements OnClickListener { @BindView(R.id.setting_sb_autoinstall) SwitchButton setting_sb_autoinstall; @BindView(R.id.setting_sb_autodelete) SwitchButton setting_sb_autodelete; @BindView(R.id.setting_sb_deletedata) SwitchButton setting_sb_deletedata; @BindView(R.id.setting_sb_concerngame) SwitchButton setting_sb_concerngame; @BindView(R.id.setting_tv_cache) TextView setting_tv_cache; @BindView(R.id.setting_tv_size) TextView setting_tv_size; private SharedPreferences sp; private Dialog loadingDialog = null; private Handler handler = new Handler(); private int checkSizeIndex; private Context context = this; @Override public void finish() { saveCurrentSetting(); super.finish(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View contentView = View.inflate(this, R.layout.activity_setting, null); init(contentView, "设置"); findViewById(R.id.setting_rl_autoinstall).setOnClickListener(this); findViewById(R.id.setting_rl_autodelete).setOnClickListener(this); findViewById(R.id.setting_rl_deletedata).setOnClickListener(this); // findViewById(R.id.setting_rl_feedback).setOnClickListener(this); findViewById(R.id.setting_rl_cache).setOnClickListener(this); findViewById(R.id.setting_cv_font_size).setOnClickListener(this); findViewById(R.id.setting_rl_concerngame).setOnClickListener(this); findViewById(R.id.setting_rl_about).setOnClickListener(this); setting_tv_cache.setText(getCacheSize()); sp = getSharedPreferences(Config.PREFERENCE, Activity.MODE_PRIVATE); // 未打开下载按钮,显示修复下载按钮 if (!sp.getBoolean("isShow", true)) { findViewById(R.id.setting_cv_fix_download).setVisibility(View.VISIBLE); findViewById(R.id.setting_cv_fix_download).setOnClickListener(this); } setting_sb_autoinstall.setChecked(sp.getBoolean("autoinstall", true)); setting_sb_autodelete.setChecked(sp.getBoolean("autodelete", true)); setting_sb_deletedata.setChecked(sp.getBoolean("deletedata", true)); setting_sb_concerngame.setChecked(sp.getBoolean("concerngame", true)); checkSizeIndex = sp.getInt("fontsize", 1); if (checkSizeIndex == 0){ checkSizeIndex = 1; } fontTextSize(checkSizeIndex); } // 获取缓存大小 private String getCacheSize() { File ecDir = getExternalCacheDir(); long cacheLength = getFolderSize(getCacheDir()); if (ecDir != null) { cacheLength += getFolderSize(ecDir); } return long2Size(cacheLength); } private long getFolderSize(File folder) { long size = 0; size += folder.length(); if (folder.isDirectory()) { for (File file : folder.listFiles()) { if (file.isDirectory()) { size += getFolderSize(file); } else { size += file.length(); } } } return size; } private String long2Size(Long length) { float m = length / 1024f / 1024f; String str = Float.toString(m); int index = str.lastIndexOf("."); if (index != -1 && str.length() > index + 3) { str = str.substring(0, index + 3); } return str + "M"; } private void saveCurrentSetting() { Editor mEditor = sp.edit(); mEditor.putBoolean("autoinstall", setting_sb_autoinstall.isChecked()); mEditor.putBoolean("autodelete", setting_sb_autodelete.isChecked()); mEditor.putBoolean("deletedata", setting_sb_deletedata.isChecked()); mEditor.putBoolean("concerngame", setting_sb_concerngame.isChecked()); mEditor.putInt("fontsize",checkSizeIndex); mEditor.apply(); } @Override public void onClick(final View v) { switch (v.getId()) { case R.id.actionbar_rl_back: finish(); break; case R.id.setting_cv_fix_download: Editor editor = sp.edit(); editor.putBoolean("isShow", true); editor.putBoolean("isCheckShow", false); editor.apply(); toast("修复成功"); EventBus.getDefault().post(new EBReuse("Refresh")); finish(); new Thread(){ @Override public void run() { try { sleep(800); } catch (InterruptedException e) { e.printStackTrace(); } EventBus.getDefault().post(new EBSkip("GameFragment", 0)); } }.start(); break; case R.id.setting_rl_autoinstall: setting_sb_autoinstall.performClick(); break; case R.id.setting_rl_autodelete: setting_sb_autodelete.performClick(); break; case R.id.setting_rl_deletedata: setting_sb_deletedata.performClick(); break; case R.id.setting_rl_cache: DialogUtils.showWarningDialog(this, "清除缓存", "清空缓存后未安装的游戏可能需要重新下载,确定清空?", new DialogUtils.ConfiremListener() { @Override public void onConfirem() { loadingDialog = DialogUtils.showWaitDialog(context, "清除缓存中..."); claerCache(); } }); break; // case R.id.setting_rl_feedback: // Intent intent = new Intent(SettingActivity.this, SuggestionActivity.class); // intent.putExtra("entrance", "(设置)"); // startActivity(intent); // break; case R.id.setting_cv_font_size: fontSize(); break; case R.id.setting_rl_about: Intent intentAbout = new Intent(this, AboutActivity.class); startActivity(intentAbout); break; case R.id.setting_rl_concerngame: setting_sb_concerngame.performClick(); default: break; } } private void fontTextSize(int i){ switch (i){ case 1: setting_tv_size.setText("小字号"); break; case 2: setting_tv_size.setText("中字号"); break; case 3: setting_tv_size.setText("大字号"); break; case 4: setting_tv_size.setText("特大字号"); break; } } //设置正文字号 private void fontSize() { final Dialog dialog = new Dialog(this); View inflate = View.inflate(this, R.layout.dialog_font_size, null); TextView tv_negative = (TextView) inflate.findViewById(R.id.font_size_negative); TextView tv_positive = (TextView) inflate.findViewById(R.id.font_size_positive); final RadioGroup radioGroup = (RadioGroup) inflate.findViewById(R.id.font_size_radiogroup); ((RadioButton)(radioGroup.getChildAt(checkSizeIndex-1))).setChecked(true); tv_negative.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog.cancel(); } }); tv_positive.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { checkSizeIndex = radioGroup.getCheckedRadioButtonId() % 4; if (checkSizeIndex == 0){ checkSizeIndex = 4; } dialog.cancel(); saveCurrentSetting(); fontTextSize(checkSizeIndex); } }); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(inflate); dialog.show(); } // 清除缓存 private void claerCache() { new Thread() { @Override public void run() { long start = System.currentTimeMillis(); FileUtils.deleteFolder(getCacheDir()); FileUtils.deleteFolder(getExternalCacheDir()); long time = System.currentTimeMillis() - start; if (time < 1000) { try { sleep(1000 - time); } catch (InterruptedException e) { e.printStackTrace(); } } if (loadingDialog != null) { loadingDialog.dismiss(); } handler.post(new Runnable() { @Override public void run() { setting_tv_cache.setText(getCacheSize()); Toast.makeText(SettingActivity.this, "缓存清除成功", Toast.LENGTH_SHORT).show(); } }); } }.start(); } @Override public void onPause() { super.onPause(); saveCurrentSetting(); } }