android app英文 英文模式,Android APP 中英文切换

实习期间,师父要求做app的中英文切换,就顺便记录了下。

一、AndroidManifest.xml文件(清单文件)

在每个要切换语言的Activity下面添加:

android:configChanges="locale"

1

3 android:configChanges="locale"

4 android:launchMode="singleTop"

5 android:screenOrientation="portrait"

6 android:windowSoftInputMode="adjustPan" >

7 activity>

百度上都是这么写的,然而我并没有用到。

二、创建一个英文的strings.xml文件,目录名为values-en

D9Mo8EABwy0RQAAAABJRU5ErkJggg==or

7j2JY9etXYwAAAAASUVORK5CYII=

values/strings.xml这个为默认语言,如果values-en目录下的strings.xml不存在,那英文就会选取默认语言。

1 xml version="1.0" encoding="utf-8"?>

2

3 languagestring>

4 Settingsstring>

5 updating..string>

6 resources>

三、核心代码

1 /**

2 * 刷新语言3 */

4 public voidupdateActivity(String sta) {5

6 //本地语言设置

7 Locale myLocale = newLocale(sta);8 Resources res =getResources();// 获得res资源对象9 DisplayMetrics dm =res.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。10 Configuration conf =res.getConfiguration();// 获得设置对象11 conf.locale =myLocale;// 简体中文12 res.updateConfiguration(conf, dm);13 //startActivity((new Intent(this, TabActivity.class)));14 //this.finish();

15 }

String sta= getResources().getConfiguration().locale.getCountry()  //用于判断当前的语言

Locale.getDefault().getLanguage()//语言:取到的比如中文为zh,英文为en,日文为ko;

也可以调用此类

071b9c07855ff108dbf93e9ebb883df3.png

ef0b22e376e38997e907b437a93e4cfe.png

public classLanguageSettings {private static LanguageSettings language = null;private String currentLanguage = "zh";privateLanguageSettings() {

}public staticLanguageSettings getInstance() {if (language == null) {

language= newLanguageSettings();

}else{

}returnlanguage;

}publicString getCurrentLanguage() {returncurrentLanguage;

}public voidswitchCurrentLanguage() {if (currentLanguage.equals("zh")) {

currentLanguage= "en";

}else{

currentLanguage= "zh";

}

}

}

LanguageSettings

1 //切换成英文

2 if(LanguageSettings.getInstance().getCurrentLanguage()3 .equals("zh")) {4 updateActivity("en");5 LanguageSettings.getInstance().switchCurrentLanguage();6 } else{7 //切换成中文

8 updateActivity("zh");9 LanguageSettings.getInstance().switchCurrentLanguage();10 }

LanguageSettings.getInstance().getCurrentLanguage() 给变量动态赋值的标识列,用于判断!(采用单例模式)

我自己写的是这样的:

private void checkLanguage() {

// 界面出来前判断好

String aString = SystemArgs.LANGUAGE;

System.out.print(aString);

System.out.print(SystemArgs.LANGUAGE);

String language = pref.getString(SystemArgs.LANGUAGE, "Chinese");

System.out.print(language);

Log.i("a", language);

try {

if (language.equalsIgnoreCase("Chinese") || language.equals("中文"))

chooseLanguage(Locale.CHINA);

else if (language.equalsIgnoreCase("English")

|| language.equals("英文"))

chooseLanguage(Locale.US);

} catch (Exception e) {

// Log.i("error", "语言选择出错");

}

}

private void chooseLanguage(Locale locale) {

Resources resources = getResources();// 获得res资源对象

Configuration config = resources.getConfiguration();// 获得设置对象

DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。

config.locale = locale; // 语言

resources.updateConfiguration(config, dm);

}

对于图片的更改,需要自己在oncreate里判断语言,然后显示什么图片

四、其他的记录

对ListPreference的语言选项设置默认值

try {

if (language.equalsIgnoreCase("Chinese") || language.equals("中文"))

CLanguage_ListPreference.setValueIndex(0);

else if (language.equalsIgnoreCase("English")

|| language.equals("英文"))

CLanguage_ListPreference.setValueIndex(1);

} catch (Exception e) {

// Log.i("error", "语言选择出错");

}

String language = defaultSharedPreferences.getString(

SystemArgs.LANGUAGE, "中文");

ImageView button = null;

// 图片要自己去判断语言选择

if (language.equalsIgnoreCase("Chinese") || language.equals("中文"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值