源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-04-26 20:40 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要: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;
 }

}
通过下面一行代码获得当前语言信息 [b]Locale curLocale = getResources().getConfiguration().locale;[/b] 判断语言和设置语言部分有详细注释,就不做过多解释啦! 资源文件需要支持多语言环境,这样才能看到切换语言的效果! [img]http://files.jb51.net/file_images/article/201703/20170312121823.jpg[/img]   创建values-en文件夹,并创建英文版的strings.xml文件。  以上这篇android动态设置app当前运行语言的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部