android动态设置app当前运行语言的方法
程序员文章站
2023-12-10 12:55:16
android开发中有时候碰到切换语言的需求,这时候需要通过代码动态改变当前运行语言。
package com.example.androidtest;...
android开发中有时候碰到切换语言的需求,这时候需要通过代码动态改变当前运行语言。
package com.example.androidtest; import java.util.locale; import android.os.bundle; import android.app.activity; import android.content.intent; import android.content.res.configuration; import android.content.res.resources; import android.util.displaymetrics; import android.view.menu; import android.view.view; import android.widget.button; public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); button btnlang = (button) findviewbyid(r.id.btn); // 按下按钮改变语言类型,在“简体中文”和“英文”之间切换 btnlang.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { // 获取当前locale(包含语言信息) locale curlocale = getresources().getconfiguration().locale; // 判断语言类型,有以下两种判断方式 // 方法一,通过locale的equals方法 // public boolean equals (object object) // returns true if object is a locale with the same language, country and variant. if (curlocale.equals(locale.simplified_chinese)) { setlang(locale.english); } else { setlang(locale.simplified_chinese); } // 方法二,通过语言码,getlanguage()方法可以获得对应语言码 // public string getlanguage () // returns the language code for this locale or the empty string if no language was set. // if (curlocale.getlanguage().equals(locale.simplified_chinese.getlanguage())) { // setlang(locale.english); // } else { // setlang(locale.simplified_chinese); // } } }); } private void setlang(locale l) { // 获得res资源对象 resources resources = getresources(); // 获得设置对象 configuration config = resources.getconfiguration(); // 获得屏幕参数:主要是分辨率,像素等。 displaymetrics dm = resources.getdisplaymetrics(); // 语言 config.locale = l; resources.updateconfiguration(config, dm); // 刷新activity才能马上奏效 startactivity(new intent().setclass(mainactivity.this, mainactivity.class)); mainactivity.this.finish(); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.activity_main, menu); return true; } }
通过下面一行代码获得当前语言信息
locale curlocale = getresources().getconfiguration().locale;
判断语言和设置语言部分有详细注释,就不做过多解释啦!
资源文件需要支持多语言环境,这样才能看到切换语言的效果!
创建values-en文件夹,并创建英文版的strings.xml文件。
以上这篇android动态设置app当前运行语言的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。