当前位置: 首页 > news >正文

网络推广平台中心seo百家论坛

网络推广平台中心,seo百家论坛,宁波外贸公司实力排名,在线制作图片加文字免费软件Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总
游戏脚本-辅助自动化Android控件全解手册再战Android系列
Scratch编程案例软考全系列Unity3D学习专栏
蓝桥系列ChatGPT和AIGC

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,交流让学习不再孤单

在这里插入图片描述

👉实践过程

最近公司开始做多语言版本,由于之前没有做过,所以在网上搜寻了一番这方面的资料,最后经过实践、总结,写下了这篇文章。源码Github

多语言的切换功能

首先,实现多语言的切换功能,参考Android App 多语言切换。

1.在res资源文件目录下添加不同语言的values,如图:
在这里插入图片描述

添加多语言.png

2.通过修改Configuration中的locale来实现app语言的切换,具体代码如下:

Resources resources = context.getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
resources.updateConfiguration(config, dm);

3.根据本地缓存的type获取对应的locale,其中7.0以上的系统需要另做处理,具体代码如下:

Locale locale;
// 应用用户选择语言
switch (type) {
case 0:
//由于API仅支持7.0,需要判断,否则程序会crash(解决7.0以上系统不能跟随系统语言问题)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
LocaleList localeList = LocaleList.getDefault();
locale = localeList.get(localeList.size() - 1);
} else {
locale = Locale.getDefault();
}
break;
、、、
default:
locale = thLocale;
break;
}

4.在AppApplication中初始化时设置本地语言,用于每次启动APP后切换到本地缓存的语言

//  设置本地化语言
I18NUtils.setLocale(this);

5.在BaseActivity的OnCreate()方法中设置语言,用于处理每次切换系统语言后app语言会跟随系统变化的问题

if(!I18NUtils.isSameLanguage(this)) {I18NUtils.setLocale(this);I18NUtils.toRestartMainActvity(this);
}

6.手动切换语言时,先更新locale配置,然后通过跳转到主Activity实现。Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK通过清理掉进程中的所有activity重新配置。

Intent intent = new Intent(activity, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
activity.startActivity(intent);
// 杀掉进程,如果是跨进程则杀掉当前进程
//  android.os.Process.killProcess(android.os.Process.myPid());
//  System.exit(0);

解决7.0以上系统存在的兼容问题

这个问题的解决参考了Android 7.0 语言设置爬坑。由于Android7.0以上Configuration将通过LocaleList来管理语言,并且系统切换语言后,系统默认语言可能并不在LocaleList顶部官方API说明

进测试得出结论,如果APP手动选择过语言则系统语言是第二个,否则是第一个。获取当前系统locale,代码如下:

//由于API仅支持7.0,需要判断,否则程序会crash(解决7.0以上系统不能跟随系统语言问题)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {LocaleList localeList = LocaleList.getDefault();
int spType = getLanguageType(AppApplication.getAppContext());
// 如果app已选择不跟随系统语言,则取第二个数据为系统默认语言
if(spType != 0 && localeList.size() > 1) {locale = localeList.get(1);} else {locale = localeList.get(0);}
} else {
locale = Locale.getDefault();
}

7.0以上系统WebView所在Activity没有跟随语言切换问题

更新日期:2017年12月14日15:56:47

在后续的测试发现,在有webView的activitiy中语言并没有随着语言进行切换。参考多语言切换失效的问题以及stackoverflow后,通过在切换语言之前执行new WebView(context).destroy()解决。代码:

// 解决webview所在的activity语言没有切换问题
new WebView(context).destroy();
// 切换语言
Resources resources = context.getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
config.locale = getLocaleByType(type);
LogUtils.logd("setLocale: " + config.locale.toString());
resources.updateConfiguration(config, dm);

总结

自此,多语言切换的问题已经完美解决了。经测试,完全兼容7.0以上系统的多语言切换。

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

http://www.yayakq.cn/news/564025/

相关文章:

  • 电子网站建设公司域名访问网址
  • 广东网站建设专业公司哪家好企业推广策划书
  • 局域网内的网站建设学编程课对孩子有什么好处
  • 网站按关键词显示广告图片沈阳专业做网站公司
  • 社交网站建设网站北京vi设计案例分析
  • 商贸城网站建设方案昆明学校网站建设
  • 微网站幻灯片尺寸简易的网站建设
  • 淘宝网站建设退款河北建设工程信息网可登录中项网
  • 中文手机编程软件app钦州seo
  • 设计网站什么叫空间不稳定免费的个人简历电子版
  • 常用的网站建设技术有江苏建设监理协会网站
  • 网站建设在哪里办公营销型企业网站建设方案
  • 阿里云备案多个网站四川建设网站首页
  • 福州网站如何制作南通做网站优化哪家好
  • 商务网站建设方案ppt沈阳建设工程招投标网
  • 中国建设银行网站怎么改支付密码忘了怎么办3d室内设计效果图制作教程
  • 效果好的网站建设公司网站导航页面设计
  • 有什么专门做电子琴音乐的网站网站框架图片
  • 西安网站推广哪家稳定厦门网站建设手机
  • 做电脑壁纸的网站东莞阿里网站设计
  • asp网站栏目如何修改成都网站制作公司有哪些
  • 个人网站建设与管理工作总结哪里可以免费发广告
  • 阿里云智能logo设计网站网站充值接口
  • html静态网页模板代码济南百度提升优化
  • google网页搜索seo的搜索排名影响因素有
  • 手机影视网站开发微网站建设网站
  • 成都 直播网站建设做视频资源网站有哪些内容
  • 网站建设运营协议书wordpress还原安装
  • wordpress 相互关注淘宝的seo是什么意思
  • 两学一做知识竞答网站微信小程序开发教程书