-
2021-06-02 23:50:58
这篇文章详细介绍了Android开发之中英文切换,文中穿插有实例代码和示例程序介绍的很详细,遇到同样问题的朋友可以参考一下,如果有更好的解决方法,请留言分享帮助更多的程序员。
首先配置文件的application标签中要添加:
android:configChanges="locale"
然后进入页面设置:
//获取语言并显示
if ((Integer) SPUtil.get("checkItem", 0) == 0) {
//切换为简体中文
Configuration config = getResources().getConfiguration();
Resources resources = getResources();
config.locale = Locale.CHINESE;
DisplayMetrics dm = resources.getDisplayMetrics();
resources.updateConfiguration(config, dm);
} else if ((Integer) SPUtil.get("checkItem", 0) == 1) {
//切换为英语
Configuration config = getResources().getConfiguration();
Resources resources = getResources();
config.locale = Locale.ENGLISH;
DisplayMetrics dm = resources.getDisplayMetrics();
resources.updateConfiguration(config, dm);
}
Dialog弹窗设置:
final String[] items = {"中文", "English"};
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
alertBuilder.setTitle(getResources().getString(R.string.tv_language_set));
alertBuilder.setSingleChoiceItems(items, (Integer) SPUtil.get("checkItem", 0), (dialogInterface, i) -> {
alertDialog.dismiss();
itemLanguage = items[i];
if ("中文".equals(itemLanguage)) {
SPUtil.put("checkItem", 0);
} else if ("English".equals(itemLanguage)) {
SPUtil.put("checkItem", 1);
}
changeLanguage();
});
alertBuilder.setNegativeButton(getResources().getString(R.string.cancel), (dialogInterface, i) -> alertDialog.dismiss());
alertDialog = alertBuilder.create();
alertDialog.show();
//放在show()之后,不然有些属性是没有效果的,比如height和width
Window dialogWindow = alertDialog.getWindow();
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); // 获取屏幕宽、高
WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值
// 设置宽度
p.width = (int) (d.getWidth() * 0.95); // 宽度设置为屏幕的0.95
p.gravity = Gravity.CENTER;//设置位置
//p.alpha = 0.8f;//设置透明度
dialogWindow.setAttributes(p);
退到栈顶并重启首页:
private void changeLanguage() {
finish();
Intent _Intent = new Intent(this, HomeActivity.class);
_Intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(_Intent);
//清除Activity退出和进入的动画
overridePendingTransition(0, 0);
}
关键词:android,android开发,开发,之中,中英,中英文,英文,切换
更多相关内容 -
Android中英文切换
2017-01-12 23:43:40Android中实现中英文切换 -
Android APP 中英文切换
2021-06-02 23:49:23实习期间,师父要求做app的中英文切换,就顺便记录了下。一、AndroidManifest.xml文件(清单文件)在每个要切换语言的Activity下面添加:android:configChanges="locale"1 3 android:configChanges="locale"4 android:...实习期间,师父要求做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
添加权限:
二、创建一个英文的strings.xml文件,目录名为values-en
values/strings.xml这个为默认语言,如果values-en目录下的strings.xml不存在,那英文就会选取默认语言。
1 <?xml version="1.0" encoding="utf-8"?>
2
3 language
4 Settings
5 updating..
6
三、核心代码
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;
也可以调用此类
1 public classLanguageSettings {2
3 private static LanguageSettings language = null;4
5 private String currentLanguage = "zh";6
7 privateLanguageSettings() {8 }9
10 public staticLanguageSettings getInstance() {11 if (language == null) {12 language = newLanguageSettings();13 } else{14
15 }16 returnlanguage;17 }18
19 publicString getCurrentLanguage() {20 returncurrentLanguage;21 }22
23 public voidswitchCurrentLanguage() {24 if (currentLanguage.equals("zh")) {25 currentLanguage = "en";26 } else{27 currentLanguage = "zh";28 }29 }30 }
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() 给变量动态赋值的标识列,用于判断!(采用单例模式)
原文:http://www.cnblogs.com/tutuskys/p/4863146.html
-
Android AutoWrapTextView中英文排版问题的解决方法
2020-08-30 11:38:51主要给大家介绍了关于Android AutoWrapTextView中英文排版问题的解决方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。 -
Android实现中英文切换
2021-04-12 17:00:38这样就添加了一个app英语的string.xml文件,将需要改变语言的text添加进去,并给适当的name,在java中通过getString(R.string.name)来查找对应的text,有一个默认的strings.xml文件,这个文件是与其对应的。...首先添加英语对应的xml文件,在android下,res文件夹右键new->Android Resource File->local,再点击>>选择ji:Yiddish(美国国旗)->us->ok
这样就添加了一个app英语的string.xml文件,将需要改变语言的text添加进去,并给适当的name,在java中通过getString(R.string.name)来查找对应的text,有一个默认的strings.xml文件,这个文件是与其对应的。
默认strings.xml文件
<resources> <string name="lange">语言:中文</string> <string name="folder_create_success">创建文件夹</string> <string name="folder_delete_success">删除文件夹</string> </resources>
英语对应的strings.xml文件
<resources> <string name="lange">Language:English</string> <string name="folder_create_success">Create a folder</string> <string name="folder_delete_success">Delete a folder</string> </resources>
SPUtils类
public class SPUtils { private static final String FILE_NAME = "muzi"; public static void put(Context context, String key, Object object) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); if (object instanceof String) { editor.putString(key, (String) object); } else if (object instanceof Integer) { editor.putInt(key, (Integer) object); } else if (object instanceof Boolean) { editor.putBoolean(key, (Boolean) object); } else if (object instanceof Float) { editor.putFloat(key, (Float) object); } else if (object instanceof Long) { editor.putLong(key, (Long) object); } else { editor.putString(key, object.toString()); } editor.apply(); } public static Object get(Context context, String key, Object defaultObject) { SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); if (defaultObject instanceof String) { return sp.getString(key, (String) defaultObject); } else if (defaultObject instanceof Integer) { return sp.getInt(key, (Integer) defaultObject); } else if (defaultObject instanceof Boolean) { return sp.getBoolean(key, (Boolean) defaultObject); } else if (defaultObject instanceof Float) { return sp.getFloat(key, (Float) defaultObject); } else if (defaultObject instanceof Long) { return sp.getLong(key, (Long) defaultObject); } return null; } }
Utils类
public class Utils { private static final String KEY_APP_LANGUAGE = "KEY_APP_LANGUAGE"; //更改App语言 public static void changeAppLanguage(Context context, Locale locale, boolean persistence) { Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); Configuration configuration = resources.getConfiguration(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { configuration.setLocale(locale); } else { configuration.locale = locale; } resources.updateConfiguration(configuration, metrics); if (persistence) { saveLanguageSetting(context, locale); } } public static boolean isSameWithSetting(Context context) { String lang = context.getResources().getConfiguration().locale.getLanguage(); return lang.equals(getAppLanguage(context)); } // 04.10 测试 //App保存语言设置 public static void saveLanguageSetting(Context context,Locale locale){ SPUtils.put(context,KEY_APP_LANGUAGE,locale.getLanguage()); } public static String getAppLanguage(Context context){ return (String)SPUtils.get(context,KEY_APP_LANGUAGE,Locale.getDefault().getLanguage()); } public static Locale getAppLocale(Context context){ String lang = (String)SPUtils.get(context,KEY_APP_LANGUAGE,Locale.getDefault().getLanguage()); if(!lang.equals(Locale.SIMPLIFIED_CHINESE.getLanguage())&&!lang.equals(Locale.US.getLanguage())){ lang = Locale.SIMPLIFIED_CHINESE.getLanguage(); } Locale locale = new Locale(lang); return locale; } }
MainActivity.class
private void initView() { setLange(); bt_menu_language.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ButtonAnimation.initButton(bt_menu_language); Locale appLocale = Utils.getAppLocale(MainActivity.this); String appLanguage = Utils.getAppLanguage(MainActivity.this); Utils.changeAppLanguage(MainActivity.this, appLocale, true); //更改app语言 布尔值为true保存进入SPUTils changeLange(); } }); } public void setLange() { String lan = Utils.getAppLanguage(this); if (lan.equals("en")) { setLocale(Locale.US); } else if (lan.equals("zh")) { setLocale(Locale.SIMPLIFIED_CHINESE); } } private void changeLange() { String lan = Utils.getAppLanguage(this); Log.e("本地语言类型", "language=" + lan); if (lan.equals("zh")) { setLocale(Locale.US); } else if (lan.equals("en")) { setLocale(Locale.SIMPLIFIED_CHINESE); } recreate();//重新刷新 } public void setLocale(Locale myLocale) { Resources res = getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration conf = res.getConfiguration(); conf.locale = myLocale; res.updateConfiguration(conf, dm); Utils.saveLanguageSetting(this, myLocale); }
点击按钮就能将app语言在中文与英语之间切换。
觉得有用记得点赞加关注哦,爱您。
-
安卓开发中英文切换
2019-11-20 15:10:17切换中英文 首先需要中英文的string.xml 切换应用显示中文或者英文 判断当前系统语言 String language = getResources().getConfiguration().locale.getCountry(); 切换应用显示语言 if (language....切换中英文
首先需要中英文的string.xml
切换应用显示中文或者英文
判断当前系统语言
String language = getResources().getConfiguration().locale.getCountry();
切换应用显示语言
if (language.equalsIgnoreCase("cn")) { Resources resources = getResources(); Configuration config = resources.getConfiguration(); DisplayMetrics dm = resources.getDisplayMetrics(); config.locale = Locale.CHINA; resources.updateConfiguration(config, dm); } else { Resources resources = getResources(); Configuration config = resources.getConfiguration(); DisplayMetrics dm = resources.getDisplayMetrics(); config.locale = Locale.US; resources.updateConfiguration(config, dm); }
刷新当前页面:
一般切换语言后想要在当前页面查看中英文切换效果
finish(); Intent intent = new Intent(ChangeLaugageActivity.this, ChangeLaugageActivity.class); startActivity(intent); overridePendingTransition(0, 0);
**overridePendingTransition(0,0)**去除页面切换动画
重启app:
一般切换语言后需要重新唤起app , 才能生效
killAllActivity(); startActivity(new Intent(this, MainActivity.class)); finish();
注意:
7.0安卓系统可以设置默认语言以及次选语言 , 而且在MyApplication下设置全局切换语言无效 , 可在全局的BaseActivity下的onCreate中进行语言设置
-
Android一键中英文切换
2016-12-06 17:18:41Android一键中英文切换,无需activity重启,完美解决方案 -
安卓开发 设置应用语言 中英文切换
2016-06-14 17:04:13安卓开发 设置应用语言 中英文切换。 -
安卓开发 设置应用语言 中英文切换。
2016-06-16 09:39:46安卓开发 设置应用语言 中英文切换。 -
安卓实现中英文切换
2017-11-26 11:49:18大家好,今天给大家分享一下中英文切换,其实不止是中英文,只是这个比较有代表性,什么语言都可以切换。 安卓里面控制语言就是新建包,在res里面新建values-zh和values-en,zh代表的是中文,en代表的是英文。把... -
Android UI(编辑手机信息页面,中英文切换)
2017-03-13 21:48:33一,实验所需图片 二,实验步骤 1.创建“手机信息页面”,即main activity,主要是展示手机页面。 如下: -
Android 中英文切换
2019-04-08 10:11:32看似很复杂的中英文切换其实很简单,如果在做项目的工程中,首先要看一下项目设计的功能,看看有没有中英文,不然到后面操作的时候会非常麻烦,因为,你需要把项目里的每一个字都要放在string.xml文件里面,你要是... -
Android 中英文切换及遇到的问题
2021-06-03 03:04:09Android 中英文切换及遇到的问题背景:近期由于项目上的需求接受到了一个中英文切换需求。只需要在切换中英系统语言的时候改变app的名称为中文或英文就可以。关于如何实现这些可以参考如下文章:实现中英文切换的... -
android开发中英文切换
2016-02-14 15:51:44今天介绍下安卓开发下面,如何实现中英文相互切换, 一,需要在res下新建文件夹,大陆中文为values-zh-rCN,英文values-en-rUS,更多可以参考http://my.oschina.net/quttap/blog/204499,直接用values-zh,values-en也... -
Android app语言中英文转换、多语言转换
2019-01-10 09:20:49总结: 1.Andorid studio安装AndroidLocalize插件(在...3.代码实现转换逻辑 具体步骤如下: 1.安装插件步骤省略 2.翻译文件,如下图 点击OK翻译完毕,翻译完毕之后,会出现如下图所示的文件夹 ... -
安卓开发需求之一:实现中英文切换
2021-07-28 17:22:56大家好,今天给大家分享一下中英文切换,其实不止是中英文,只是这个比较有代表性,什么语言都可以切换。 安卓里面控制语言就是新建包,在res里面新建values-zh-rCN和values-en-rUS,zh代表的是中文,en代表的是英文... -
android根据当前系统设置语言在app实现中英文切换
2018-10-24 11:27:09今天介绍下安卓开发下面,如何实现中英文相互切换, 一,需要在res下新建文件夹,大陆中文为values-zh-rCN,英文values-en-rUS,更多可以参考http://my.oschina.net/quttap/blog/204499,直接用values-zh,values-en... -
Android 中英文切换的实现。
2017-04-16 00:22:30这时候就涉及了中英文的切换了 前提:字符串都在string 中写两份。 一份是在 values中的strings中定义汉字 另外一份,就是你要切换的语言了。在相同的位置新建一个文件夹命名为: values-en 里面新建一个... -
安卓字体使用多语言相关-安卓开发设置应用语言中英文切换.rar
2019-07-29 16:13:40安卓开发 设置应用语言 中英文切换.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。 -
Android 中英文切换工具类
2019-01-03 10:50:58// 英文 config.setLayoutDirection(Locale.ENGLISH); mLanguage = "en"; country = "US"; Configure.setAppLanguage(LANGUAGE_ENGLISH); break; case LANGUAGE_DEFAULT: country = Locale.getDefault().... -
Android 多语言设置,这里演示中英文转换
2018-12-27 17:04:22有的项目需要国际化,这样在语言需求方面就比较多了,所以我们需要设置语言转换,语言有很多,这里示范中英文转换。 工具:Android Studio 1、生成需要转换语种的 string.xml 文件 2、语种使用设置 3、语种转换 ... -
Android webView会影响中英文切换
2021-04-30 15:20:28config, resources.displayMetrics ) } 2、第二步:需要在Application的onCreate内调用方法: private fun initWebView() { WebView(this).destroy() } 3、以上就可以解决嵌套WebView导致国际化语言切换错乱问题。 -
Android国际化-中英文切换
2021-12-29 14:45:36Android国际化-中英文切换