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

本文介绍如何在Android应用中实现多语言支持,包括自动和手动设置应用语言的方法,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值