当前位置: 代码迷 >> Android >> Android开发经验总结——系统配置的兑现
  详细解决方案

Android开发经验总结——系统配置的兑现

热度:43   发布时间:2016-05-01 14:04:19.0
Android开发经验总结——系统配置的实现

在开发Android应用时,常常需要保存一些用户的设置,比如应用中涉及到图片或视频的存储地址,应用的语言,或者应用中某些功能的开关,等等。

这类存储在Android中非常适合用Shared Preferences,它类似我们常用的ini文件。

查API很容易知道如何存储、读取数据,这里不做介绍。只给出一个我的封装,便于在程序中使用。如下:

?

package cn.edu.xjtu.chao;import java.util.HashMap;import java.util.Locale;import android.content.Context;import android.content.SharedPreferences;public class Setting {	//程序所使用的文件	private static final String SETTINGS_FILE = "myappSetting";	private static HashMap<String,Object> DEFAULT_SETTING = null;	private SharedPreferences mSettings = null;	private SharedPreferences.Editor mEditor = null;		//静态初始化块,设置默认值	static{		DEFAULT_SETTING = new HashMap<String, Object>();		DEFAULT_SETTING.put("image_root", "/sdcard/myapp/image/");		DEFAULT_SETTING.put("video_root", "/sdcard/myapp/video/");		//下面是根据系统地区设置应用默认语言		if(Locale.getDefault().getCountry().equals("CN")){			DEFAULT_SETTING.put("lang", "chs");		}		else if(Locale.getDefault().getCountry().equals("TW")){			DEFAULT_SETTING.put("lang", "cht");		}		else{			DEFAULT_SETTING.put("lang", "en");		}		//还可以添加其他默认设置	}		//构造方法	public Setting(Context context){		//用来获取数据		mSettings = context.getSharedPreferences(SETTINGS_FILE, 0);		//用来编辑数据		mEditor = mSettings.edit();	}		public String getString(String key){		if(DEFAULT_SETTING.get(key) != null)			return mSettings.getString(key, (String) DEFAULT_SETTING.get(key));		else			return mSettings.getString(key, null);	}		public int getInt(String key){		if(DEFAULT_SETTING.get(key) != null)			return mSettings.getInt(key, (Integer) DEFAULT_SETTING.get(key));		else			return mSettings.getInt(key, 0);	}		public boolean getBoolean(String key){		if(DEFAULT_SETTING.get(key) != null)			return mSettings.getBoolean(key, (Boolean) DEFAULT_SETTING.get(key));		else			return mSettings.getBoolean(key, false);	}		public float getFloat(String key){		if(DEFAULT_SETTING.get(key) != null)			return mSettings.getFloat(key, (Float) DEFAULT_SETTING.get(key));		else			return mSettings.getFloat(key, 0f);	}		public long getLong(String key){		if(DEFAULT_SETTING.get(key) != null)			return mSettings.getLong(key, (Long) DEFAULT_SETTING.get(key));		else			return mSettings.getLong(key, 0);	}		public Setting putString(String key, String value){		mEditor.putString(key, value);		return this;	}		public Setting putInt(String key, int defaultValue){		mEditor.putInt(key, defaultValue);		return this;	}		public Setting putBoolean(String key, boolean defaultValue){		mEditor.putBoolean(key, defaultValue);		return this;	}		public Setting putFloat(String key, float defaultValue){		mEditor.putFloat(key, defaultValue);		return this;	}		public Setting putLong(String key, long defaultValue){		mEditor.putLong(key, defaultValue);		return this;	}		//编辑之后要调用此函数来提交	public boolean commit(){		return mEditor.commit();	}}

在Activity中这样使用:

?

//定义Setting对象Setting mSetting = new Setting(this);//获取应用现在使用的语言String lang = mSetting.getString("lang");//设置应用的语言mSetting.putString("lang","chs");//在所有修改完之后调用commitmSetting.commit();

OK,就这样,比较简单,就不做demo了。

注:此博客参加“Google 暑期大学生博客分享大赛 - 2011 Android 成长篇

  相关解决方案