今天才从别人博客上学来的,浅谈一下我的看法
代码可以从那位大神的博客上下载:
http://download.csdn.net/detail/qcooler/7052849
①:在res目录下建立values-en和values-zh-rCN文件,并各在每个文件下建立一个strings.xml文件,格式可以参考values/strings.xml。
values-en/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">LanguageSetting</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="chinese_btn">chinese</string>
<string name="english_btn">english</string>
<string name="yellow">yellow</string>
<string name="red">red</string>
<string name="gray">gray</string>
<string name="green">green</string>
<string name="orange">orange</string>
<string name="blue">blue</string>
<string name="black">black</string>
</resources>
values-zh-rCN/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">语言设置</string>
<string name="action_settings">设置</string>
<string name="hello_world">嗨 世界</string>
<string name="chinese_btn">中文</string>
<string name="english_btn">英文</string>
<string name="yellow">黄色</string>
<string name="red">红色</string>
<string name="gray">灰色</string>
<string name="green">绿色</string>
<string name="orange">橙色</string>
<string name="blue">蓝色</string>
<string name="black">黑色</string>
</resources>
②Androidmainfest.xml:
<activity
android:name="com.example.languagesetting.MainActivity"
android:configChanges="locale"
<!-- 注意上面的一句话-->
android:label="@string/app_name" >
</activity>
③:在主布局文件中添加两个按钮,一个用来换成中文,一个用来换成英文
④:在MainActivity文件中:
public class MainActivity extends Activity {
private Configuration config;
private DisplayMetrics dm;
private Resources resources;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resources = getResources();// 获得res资源对象
config = resources.getConfiguration();// 获得设置对象
dm = resources.getDisplayMetrics();
((Button) findViewById(R.id.chinese_btn))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
config.locale = Locale.SIMPLIFIED_CHINESE;
resources.updateConfiguration(config, dm);
onCreate(null);
/*如果产生了其他的bug,用“recreate()”试试,具体解释向下看*/
}
});
((Button) findViewById(R.id.english_btn))
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
config.locale = Locale.US;
resources.updateConfiguration(config, dm);
onCreate(null);
/*如果产生了其他的bug,用“recreate()”试试,具体解释向下看*/
}
});
}
}
MainActivity中的代码还没看懂嘿嘿
好像一般情况下,一个按钮控制中英文转换的,刚才我试了一下用sharepreference辅助加一个switch实现的,一开始我没有用switch而是用的if,但是就是实现不了看了半天也不是逻辑的问题,我觉得应该是oncreate()方法有点其他的猫腻,等偶解决了,再放代码~~
先传个switch的:
①先声明一个变量:
SharedPreferences sp = this.getSharedPreferences(“zwq”, Activity.MODE_PRIVATE);
②上传一个数据:
sp.edit().putString(“zwq”, “1”).commit();
③然后在一个按钮监听中添加以下代码:
switch (sp.getString("zwq", "1")) {
case "1":
sp.edit().putString("zwq", "0").commit();
config.locale = Locale.US;
resources.updateConfiguration(config, dm);
onCreate(null);
/*如果产生了其他的bug,用“recreate()”试试,具体解释向下看*/
break;
case "0":
sp.edit().putString("zwq", "1").commit();
config.locale = Locale.SIMPLIFIED_CHINESE;
resources.updateConfiguration(config, dm);
onCreate(null);
/*如果产生了其他的bug,用“recreate()”试试,具体解释向下看*/
break;
}