仿微信开发(二)--系统语言设置
来源:互联网 发布:武汉淘宝产品拍摄 编辑:程序博客网 时间:2024/06/03 06:30
最近有一段时间在忙别的事情,在做语言设置的时候,发现网上的一些方法都是在程序里面有效,但是退出程序重新启动的时候就无效了。我也苦恼了一会,通过谷歌找到了一个解决的办法,特此写下。xutils的应用在上篇文章讲了,这个不做重复讲解了。
主要的实现就是读取程序设置项,获取要更改的语言之后,重新启动活动来改变语言。注意:在绘制页面之前要先设置好语言配置项。这就是我在这两个Activity中没有用到xutils的原因(使用@Contentview加载布局在设置语言之前)。
1.创建启动页代码,添加语言选项
package com.malion.miniwechat.activity;import java.util.Locale;import com.malion.miniwechat.R;import android.content.Intent;import android.content.SharedPreferences;import android.content.res.Configuration;import android.content.res.Resources;import android.os.Bundle;import android.preference.PreferenceManager;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;/** * 项目启动页 通过配置项 来处理自己的逻辑 这里不能使用xutils的注入 因为在设置页面之前要进行语言设置 或者我技术不够 找不到对应的方法 * */public class SplashActivity extends BaseActivity implements OnClickListener { // 语言 private TextView mLanguageTV; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setLanguage(); setContentView(R.layout.activity_splash); mLanguageTV = (TextView) findViewById(R.id.splash_language_tv); mLanguageTV.setOnClickListener(this); } // 设置系统语言 private void setLanguage() { // TODO Auto-generated method stub Resources resource = getResources(); Configuration config = resource.getConfiguration(); SharedPreferences sharedPreference = PreferenceManager .getDefaultSharedPreferences(this); if ("zh".equalsIgnoreCase(sharedPreference.getString("language", null))) { config.locale = Locale.CHINA; } else if ("en".equalsIgnoreCase(sharedPreference.getString("language", null))) { config.locale = Locale.ENGLISH; } else { config.locale = Locale.getDefault(); } Log.i("info", config.locale.getDisplayName()); getBaseContext().getResources().updateConfiguration(config, null); } // 事件点击 @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.splash_language_tv: startActivity(new Intent(SplashActivity.this, SettingActivity.class)); break; default: break; } }}
2.创建语言设置页
package com.malion.miniwechat.activity;import java.util.List;import java.util.Locale;import java.util.Map;import org.xutils.view.annotation.ContentView;import org.xutils.view.annotation.ViewInject;import com.malion.miniwechat.R;import android.content.Intent;import android.content.SharedPreferences;import android.content.res.Configuration;import android.content.res.Resources;import android.os.Bundle;import android.preference.PreferenceManager;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;@ContentView(value = R.layout.activity_setting_language)public class SettingActivity extends BaseActivity { @ViewInject(value = R.id.setting_language_lv) private ListView mSettingLanguagesLv; private String[] mLanguageName; private ArrayAdapter<String> mAdapter; private SharedPreferences mPreferences; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); mPreferences = PreferenceManager.getDefaultSharedPreferences(this); mLanguageName = getResources().getStringArray(R.array.languages); mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, mLanguageName); mSettingLanguagesLv.setAdapter(mAdapter); mSettingLanguagesLv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub Resources resources = getResources(); Configuration config = resources.getConfiguration(); if (position == 1) { mPreferences.edit().putString("language", "zh").commit(); config.locale = Locale.CHINA; } else if (position == 2) { mPreferences.edit().putString("language", "en").commit(); config.locale = Locale.ENGLISH; } else { config.locale = Locale.getDefault(); } Log.i("info", position + config.locale.getDisplayName()); getBaseContext().getResources().updateConfiguration(config, null); Intent intent = new Intent(SettingActivity.this, SplashActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } }); }}
通过点击设置语言的list来改变启动活动中的语言配置。文笔不好写的不是很清楚。一切看代码把(不会引入xutils的同学也可以借鉴这个代码)。下载地址http://download.csdn.net/detail/u014523456/9517740。新人请多关照。
0 0
- 仿微信开发(二)--系统语言设置
- 嵌入式系统开发入门二:C语言的几个注意事项
- 嵌入式系统开发入门二:C语言的几个注意事项
- linux 设置系统语言
- linux 设置系统语言
- 设置系统的语言
- Linux系统语言设置
- linux 设置系统语言
- android设置系统语言
- 设置系统控制语言
- Linux设置系统语言
- Android 系统语言设置
- Ubuntu:设置系统语言
- 获取系统语言设置
- 获取系统语言设置
- 系统开发语言nesC
- linux系统语言设置(i18n)
- XPE 目标系统语言设置
- ubuntu开机直接进入命令行
- c++第五次作业
- 面试中的排序算法总结
- ARM FP寄存器及frame pointer介绍
- GoogleCloudMessage推送的使用二(正式使用走起)
- 仿微信开发(二)--系统语言设置
- MVC流程图
- Codeforces Round #352 (Div. 2),A题与B题题解代码,水过~~
- 【转载】SQL中declare申明变量 declare @id int
- android蓝牙4.0开发
- Swift网络请求,数据模型,图片缓存,自动布局,上拉刷新下拉加载
- Spring4+Hibernate4+Mybatis Maven的pom配置
- OpenGL学习脚印: 向量和矩阵要点(math-vector and matrices)
- BAT命令--FOR使用方法及举例