(完结)Android官方培训课-支持不同的语言

xiaoxiao2021-02-27  213

Author:jianlong.zhang Date:6/6/2017 Desc:官方培训课程学习,支持不同的语言。 Thanks: Goole 官方培训教程


自动设置应用语言

在res上右击新建AndroidResouceFile.选择local,点击 >> ,就可以看到不同语言选项,选择之后就可以自动生成相应的strings。在.java文件中,直接使用context.getResource()引用即可。系统会根据当前系统语言,选择应用的语言。

手动设置应用语言

设置语言选项 private static final Locale ENGLISH = Locale.ENGLISH; private static final Locale CHINESE_SIMPLE = Locale.SIMPLIFIED_CHINESE; private static final Locale CHINESE_TW = Locale.TRADITIONAL_CHINESE; 获取configuration context //先获取resource Resources resources = getResources(); //获取应用的配置 Configuration configuration = resources.getConfiguration(); // 设置语言 configuration.setLocale(locale); // 返回获取 strings的context return createConfigurationContext(configuration); 再通过configuration context 获取strings showTv.setText(context.getString(R.string.content));

完整代码如下:

package com.zhouzhouwang88.shoppingclient.test; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.zhouzhouwang88.shoppingclient.R; import com.zhouzhouwang88.shoppingclient.base.BaseActivity; import java.util.ArrayList; import java.util.List; import java.util.Locale; public class PreferenceActivity extends BaseActivity implements View.OnClickListener { private Button englishBtn, chineseBtn, chineseBtnTW; private TextView showTv; private static final Locale ENGLISH = Locale.ENGLISH; private static final Locale CHINESE_SIMPLE = Locale.SIMPLIFIED_CHINESE; private static final Locale CHINESE_TW = Locale.TRADITIONAL_CHINESE; @Override protected int inflateRoot(Bundle savedInstanceState) { return R.layout.activity_preference; } @Override protected void initView(Bundle savedInstanceState) { showTv = (TextView) findViewById(R.id.tv_show); preference = (RecyclerView) findViewById(R.id.activity_preference_rv); englishBtn = (Button) findViewById(R.id.btn_english); chineseBtn = (Button) findViewById(R.id.btn_chinese_simple); chineseBtnTW = (Button) findViewById(R.id.btn_chinese_tw); englishBtn.setOnClickListener(this); chineseBtn.setOnClickListener(this); chineseBtnTW.setOnClickListener(this); } @Override protected void initData(Bundle savedInstanceState) { } @Override public void onClick(View v) { Context context = null; switch (v.getId()) { case R.id.btn_english: context = switchLanguage(ENGLISH); break; case R.id.btn_chinese_simple: context = switchLanguage(CHINESE_SIMPLE); break; case R.id.btn_chinese_tw: context = switchLanguage(CHINESE_TW); break; } if (null != context) {// 这里获取strings 要使用Configuration context showTv.setText(context.getString(R.string.content)); } } private Context switchLanguage(Locale locale) { //先获取resource Resources resources = getResources(); //获取应用的配置 Configuration configuration = resources.getConfiguration(); // 设置语言 configuration.setLocale(locale); // 返回获取 strings的context return createConfigurationContext(configuration); } }
转载请注明原文地址: https://www.6miu.com/read-8790.html

最新回复(0)