Files
assistant-android/app/src/main/java/com/gh/gamecenter/SettingActivity.java

298 lines
10 KiB
Java

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();
}
}