Files
assistant-android/app/src/main/java/com/gh/gamecenter/SettingActivity.java
huangzhuanghua 3cbc850d12 项目整理
2016-12-12 16:34:19 +08:00

315 lines
11 KiB
Java
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.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.text.TextUtils;
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.common.util.PackageUtils;
import com.gh.gamecenter.eventbus.EBReuse;
import com.gh.gamecenter.eventbus.EBSkip;
import com.gh.gamecenter.manager.UpdateManager;
import com.kyleduo.switchbutton.SwitchButton;
import java.io.File;
import de.greenrobot.event.EventBus;
/**
* 游戏设置页面
*
* @author 吕方
* @since 0814
*/
public class SettingActivity extends BaseActivity implements OnClickListener {
private SwitchButton setting_sb_autoinstall, setting_sb_autodelete,
setting_sb_deletedata, setting_sb_autoupdate, setting_sb_concerngame;
private TextView setting_tv_version, setting_tv_cache,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_autoupdate).setOnClickListener(this);
findViewById(R.id.setting_rl_update).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);
setting_tv_version.setText(String.format("当前版本V%s", PackageUtils.getVersion(getApplicationContext())));
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_autoupdate.setChecked(sp.getBoolean("autoupdate", true));
setting_sb_concerngame.setChecked(sp.getBoolean("concerngame", true));
if (sp.getBoolean("isShowDisclaimer", false)) {
TextView setting_tv_disclaimer = (TextView) findViewById(R.id.setting_tv_disclaimer);
findViewById(R.id.setting_disclaimer_line).setVisibility(View.VISIBLE);
setting_tv_disclaimer.setVisibility(View.VISIBLE);
setting_tv_disclaimer.setOnClickListener(this);
}
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("autoupdate", setting_sb_autoupdate.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_autoupdate:
setting_sb_autoupdate.performClick();
break;
case R.id.setting_rl_update:
UpdateManager.getInstance(this).checkUpdate(false);
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:
startActivity(new Intent(SettingActivity.this, SuggestionActivity.class));
break;
case R.id.setting_tv_disclaimer:
String content = sp.getString("disclaimer", null);
if (!TextUtils.isEmpty(content)) {
DialogUtils.showDisclaimerDialog(this, content);
}
break;
case R.id.setting_cv_font_size:
fontSize();
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();
}
}