298 lines
10 KiB
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();
|
|
}
|
|
|
|
}
|