Android Studio之APP国际化
1、字符串国际化:只要在 res 文件夹下新建对应语言的 values 文件夹就好了,
如,英语环境下的,文件夹命名为:values-en
美国英文环境:values-en-rUS
中文环境为:values-zh
大陆地区中文环境: values-zh-cn
在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建一个默认语言环境的文件夹 : values
当某一个资源没有在语言环境的对应的资源集合中找到时,就会使用 values 下的资源。
若某一个语言环境没有在项目中定义语言环境,那么也会使用 values 下的资源。
2.、图片国际化
同理。
在 res 下新建 drawable-zh 文件夹,存放中文环境下的图片
新建 drawable-en 作为英语环境下的图片
在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建三个默认语言环境的文件夹:
drawable-hdpi
drawable-ldpi
drawable-mdpi
分别用于存放高、中。低分辨率的图片。Android 系统会根据手机的分辨率,而自动从不同的对应的某一个文件夹下去加载图片。
同样,它们也可以国际化,命名规则如:
drawable-zh-hdpi
drawable-en-ldpi
drawable-en-rUS-mdpi
可能遇到的问题:切换语言后,打开已登录状态的APP时,应用重启
提供两种解决方式:
方法一(治本):
在发生闪退的Activity中添加:
private boolean languageChange = false;private static String lastLanguage="CN";private String nowLanguange="";@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);Log.e("123", "MainActivity--onConfigurationChanged");Configuration cfg = getResources().getConfiguration();if (cfg.orientation == Configuration.ORIENTATION_LANDSCAPE) {System.out.println("ORIENTATION_LANDSCAPE");} else if (cfg.orientation == Configuration.ORIENTATION_PORTRAIT) {System.out.println("ORIENTATION_PORTRAIT");}nowLanguange = getResources().getConfiguration().locale.getCountry();if(nowLanguange !=null && !nowLanguange.equals(lastLanguage)) { lastLanguage =nowLanguange;refresh();}}private void refresh() {//finish();android.os.Process.killProcess(android.os.Process.myPid());Intent intent = new Intent(MainActivity.this, MainActivity.class);setIntent(intent);startActivity(intent);}
方法二(治标):
安装并首次进入APP时,定义一个变量记录当前手机语言环境并存放在SharedPreferences对象中,以后每次登陆都进行检查
if ( APP处于已登录状态 && !( 当前手机语言环境.equals (上次登录时的语言环境) ) ){
上次登录时的语言环境 == 当前手机语言环境;
退出登录;
重新登陆;
} else {
继续登陆;
}
以下为Locale下几种方法返回的结果,经比较可使用getCountry()方法记录并判断当前手机语言设置。
其中Locale locale = getResources().getConfiguration().locale;
中文简体:
locale.getLanguage()--zh
locale.getDisplayLanguage()--中文
locale.getCountry()--CN
locale.getDisplayName()--中文 (中国)
中文繁体:
locale.getLanguage()--zh
locale.getDisplayLanguage()--中文
locale.getCountry()--TW
locale.getDisplayName()--中文 (台灣)
美国英语:
locale.getLanguage()--en
locale.getDisplayLanguage()--English
locale.getCountry()--US
locale.getDisplayName()--English (United States)
英国英语:
locale.getLanguage()--en
locale.getDisplayLanguage()--English
locale.getCountry()--GB
locale.getDisplayName()--English (United Kingdom)
日语:
locale.getLanguage()--ja
locale.getDisplayLanguage()--日本語
locale.getCountry()--JP
locale.getDisplayName()--日本語 (日本)
VisualStudio添加不同语言环境的values资源文件目录:
指定环境,此处以添加美国英语为例:
下面添加一个文本资源文件,将英语文本放在这个文件中,即可切换为英文文本:
Android Studio之APP国际化相关推荐
- 【Android Studio安装部署系列】十八、Android studio更换APP应用图标
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio新建项目后会有一个默认图标,那么如何更换图标呢? 替换图标 这个方案不建议直接在已有项目上更换图标,建议 ...
- android studio运行APP到手机
android studio运行APP到手机 一.数据线连接手机调试 1.打开android手机的开发者模式(机型不一样,打开方式不一样,具体可百度) 2.用数据线把电脑和手机连起来(最好用原装数据线 ...
- Android Studio运行app启动模拟器一直卡在“Wating for target device to come online”解决方法
Android Studio运行app启动模拟器一直卡在"Wating for target device to come online"的情况如何解决 在启动模拟器如果一直卡在& ...
- Android studio设计app登录界面
Android studio设计app登录界面 UI界面设计 在设计登录界面时,可以使用不同布局方式来实现该功能,通常情况下使用的是LinearLayout(线性布局)和TableLayout(表格布 ...
- android app启动图片 加动画效果,Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案...
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案 大家在设计APP的末期,都会想给APP搞一些"花里胡哨"的特效来提高APP的B格.博主表示亲测有效 ...
- Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】
目录 一.前言 二.效果展示 1.APP界面展示 2.C51硬件展示 三.Android Studio APP源代码 1.AndroidManifest.xml 1.请求联网: 2.开放明文传输: 2 ...
- Android获取电子签名内容,Android Studio 获取app签名
今天在学习整合高德地图的时候,需要app的sha1码. image.png Android Studio 获取app签名的步骤如下: 1.Build下的Generate Signed APK imag ...
- Android studio诗词app古诗词中国风记事本ui设计中国古诗词
Android studio诗词app古诗词中国风记事本ui设计中国古诗词 界面设计: 视频介绍: Android 中国风诗词记录诗词记事本Android studio编译Android笔记本记事本 ...
- android studio自定义app图标
android studio自定义app图标 1.右键app名称-New-ImageAsset 2. 选择Launcher Icons(Legency only) Name 图标名称这里不要更改 不更 ...
最新文章
- 高可用集群之分布式文件系统
- 【开发环境】PyCharm 配置 GitHub ( 在 PyCharm 中向 GitHub 提交代码 )
- SAP成本会计分录大全
- oracle ajax储存过程分页,创建 Oracle 分页存储过程
- linux硬连接脚本,linux 硬链接和软链接深入理解
- AWT_方位布局(Java)
- Mybatis编写初始化Dao代码
- Eclipse中ICTCLAS 2011 的java调用
- 线性代数知识荟萃(3)——行列式
- vue 事件调用 传参_高效开发小程序,Vue 和微信小程序的区别你该了解一下
- 计算机VFP试题答案,2010全国计算机vfp二级笔试试题及答案
- 计算机语言学方面的期刊.,自然语言处理投稿哪些sci期刊
- RPG游戏制作-06-与NPC的交互
- 文科生能学计算机专业难吗,文科生能读计算机科学专业吗?
- 视频监控客户端-GB28181之转码库-转码格式支持H265、H264、MPEG4、MPEG2
- 百度的链接打不开解决办法
- Python探索性数据分析(EDA)统计数据和建模
- 机器学习基础:朴素贝叶斯分类器及其应用示例
- 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法 1
- 有害气体监测物联网云平台方案
热门文章
- 【微信公众号开发(Java版)笔记整理二】消息处理
- 懂商业的技术合伙人(14):使用HTML5开发App客户端,HTML5+和MUI框架基本介绍
- idea怎么样打开introduce local variable
- 慧荣SMI SM32X量产工具G1219 图文教程.恢复方法
- 微信小程序日历签到功能
- linux 运维之小白入门
- Liunx-02建立liunx实验环境
- 2022年西式面点师(中级)考试及西式面点师(中级)新版试题
- centos7下mysql定时全量备份、增量备份实现方法
- 东汤温泉.5 (照片50张,外链)