android动态设置app当前运行语言的方法

 更新时间:2017年03月12日 12:20:21   投稿:jingxian  
下面小编就为大家带来一篇android动态设置app当前运行语言的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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当前运行语言的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • flutter 中监听滑动事件

    flutter 中监听滑动事件

    这篇文章主要介绍了flutter 中监听滑动事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • android实现raw文件夹导入数据库代码

    android实现raw文件夹导入数据库代码

    这篇文章主要介绍了android实现raw文件夹导入数据库代码,有需要的朋友可以参考一下
    2013-12-12
  • Android中View绘制流程详细介绍

    Android中View绘制流程详细介绍

    这篇文章主要介绍了Android中View绘制流程详细介绍,涉及创建ViewRoot并关联View,ViewRoot等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Android自定义view实现有header和footer作为layout使用的滚动控件

    Android自定义view实现有header和footer作为layout使用的滚动控件

    这篇文章主要介绍了Android自定义view实现有header和footer的滚动控件,可以在XML中当Layout使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • Android AndFix热修复原理详情

    Android AndFix热修复原理详情

    这篇文章主要介绍了Android AndFix热修复原理详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值吗,需要的小伙伴可以参考一下
    2022-08-08
  • Android 中三种启用线程的方法总结

    Android 中三种启用线程的方法总结

    下面小编就为大家带来一篇Android 中三种启用线程的方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Android自定义格式显示Button的布局思路

    Android自定义格式显示Button的布局思路

    下文的效果都是xml布局文件实现的,一张图片都未曾使用,顺便贴出几个布局文件留个大家参考下,感性的朋友可不要错过了哈
    2013-04-04
  • 解决PhoneGap不支持viewport的几种方法

    解决PhoneGap不支持viewport的几种方法

    今天小编就为大家分享一篇关于解决PhoneGap不支持viewport的几种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Flutter上的数据监控深入理解

    Flutter上的数据监控深入理解

    这篇文章主要给大家介绍了关于Flutter上的数据监控的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • 详解Android之解析XML文件三种方式(DOM,PULL,SAX)

    详解Android之解析XML文件三种方式(DOM,PULL,SAX)

    这篇文章主要介绍了详解Android之解析XML文件三种方式,主要包括DOM,PULL,SAX,有兴趣的可以了解一下。
    2017-02-02

最新评论