重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
因为公司的产品大部分是销售到国外的,所以领导要求app有语言切换功能。我在网上搜了些相关知识并实现了功能,在这里做个中英文切换的demo记录下来。
创新互联建站专注于永安企业网站建设,响应式网站,成都商城网站开发。永安网站建设公司,为永安等地区提供建站服务。全流程按需定制,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
先看看demo的效果:
效果就是这样子。当然也可以做成其他语言的切换,具体根据需求而定。
原理其实很简单,就是多个strings.xml进行切换然后在刷新Activity。
首先,在AndroidManifest.xml文件中的每个需要切换语言的Activity中加入android:configChanges="locale"。
然后在res文件夹下添加对应语种的values文件:
比如中文简体就是values-zh-rCN、英文就是values-en。
当然还有其他语种的,这里我只做了两个常用的有需要的可以去查看各国语言缩写、各国语言简称。其原理都是一样的。
values-zh-rCN/strings.xml:
LanguageDemo 中文 英文 红色 ××× 蓝色 绿色 紫色
values-en/strings.xml:
LanguageDemo Chinese English Red Orange Blue Green Purple
布局文件:
最后是切换语言的核心代码:
private Configuration configuration; private DisplayMetrics displayMetrics; private Resources resources; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); resources = getResources();// 获得res资源对象 configuration = resources.getConfiguration();// 获得设置对象 displayMetrics = resources.getDisplayMetrics(); } //中文 public void Chinese(View view) { configuration.locale = Locale.SIMPLIFIED_CHINESE; resources.updateConfiguration(configuration, displayMetrics); startActivity(new Intent(MainActivity.this,MainActivity.class)); finish(); } //英文 public void English(View view) { configuration.locale = Locale.US; resources.updateConfiguration(configuration, displayMetrics); startActivity(new Intent(MainActivity.this,MainActivity.class)); finish(); }
当然刷新页面也不止这一种方法可以用onCreate(),不过这个方法限制比较多。还有recreate(),使用这个方法屏幕会闪一下。
那么源码地址:http://down.51cto.com/data/2229088
如果你喜欢我的文章就关注我的博客吧!