android最新语言,Android多语言切换

第一步:创建多语言资源文件步骤

aa2354846e9a

image.png

aa2354846e9a

image.png

第二步:Application设置加载语言(适配7.0及以下)

class MyApplication : Application() {

override fun onCreate() {

super.onCreate()

//7.0以下加载此方法

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {

setLanguage()

}

}

override fun onConfigurationChanged(newConfig: Configuration) {

super.onConfigurationChanged(newConfig)

//7.0以下加载此方法

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {

setLanguage()

}

}

/**

* 设置加载语言

*/

private fun setLanguage() {

val localconfig = SPUtils.spUtils.get(applicationContext, MyParms.LANGUAGE,"") as String

val config = resources.getConfiguration()

val metrics = resources.getDisplayMetrics()

var mlocale: Locale? = null

if (null != localconfig && !"".equals(localconfig)) {

mlocale = Locale(localconfig);

} else {

mlocale = Locale.getDefault();

}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {

config.setLocale(mlocale)

}else{

config.locale = mlocale

}

resources.updateConfiguration(config, metrics)

}

}

第三步:activity设置加载语言(适配8.0及以上)

open class BaseActivity : FragmentActivity() {

override fun attachBaseContext(newBase: Context?) {

super.attachBaseContext(newBase)

setLanguage()

}

/**

* 设置加载语言

*/

private fun setLanguage() {

val localconfig = SPUtils.spUtils.get(applicationContext, MyParms.LANGUAGE,"") as String

val config = resources.getConfiguration()

val metrics = resources.getDisplayMetrics()

var mlocale: Locale? = null

if (null != localconfig && !"".equals(localconfig)) {

mlocale = Locale(localconfig);

} else {

mlocale = Locale.getDefault();

}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {

config.setLocale(mlocale)

}else{

config.locale = mlocale

}

resources.updateConfiguration(config, metrics)

}

}

第四步:切换语言

val config: Configuration = resources.configuration

val dm = resources.displayMetrics

when(chooseType){

1 ->{//中文简体

config.locale = Locale.SIMPLIFIED_CHINESE

}

2 ->{//english

config.locale = Locale.ENGLISH

}

}

resources.updateConfiguration(config, dm)

SPUtils.spUtils.put(this,MyParms.LANGUAGE,config.locale.getLanguage())

//这边不知道怎么回事儿,必须要阻塞几百毫秒才能切换成功

Thread.sleep(500)

//切换成功后必须要重启app,才能生效

restartApp(this, xxx::class.java)

math?formula=%5Ccolor%7Bred%7D%7B%E7%AC%AC%E4%BA%94%E6%AD%A5%EF%BC%9A%E9%80%82%E9%85%8D%E7%95%8C%E9%9D%A2%E6%9C%89h5%E5%AF%BC%E8%87%B4%E7%95%8C%E9%9D%A2%E4%B8%AD%E8%8B%B1%E6%96%87%E6%B7%B7%E4%B9%B1%7D

aa2354846e9a

image.png

WebView(this).destroy()

math?formula=%5Ccolor%7Bred%7D%7B%E4%BB%A5%E4%B8%8A%E4%BB%A3%E7%A0%81%E5%BF%85%E9%A1%BB%E8%A6%81%E5%8A%A0%2C%E5%88%87%E8%AE%B0%20%E5%88%87%E8%AE%B0%20%E5%88%87%E8%AE%B0%EF%BC%81%EF%BC%81%EF%BC%81%7D

重启app代码

/**

* 重启app

*/

fun restartApp(activity: Activity, homeClass: Class?) {

val intent = Intent(activity, homeClass)

intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK

startActivity(intent)

Process.killProcess(Process.myPid())

System.exit(0)

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值