android 应用内语言切换

今天学习了android的语言切换方法,并编了一个一个小例子,可以从中了解android

的语言转换机制,代码很简单,直接上代码

首先是layout的布局文件,简单布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".LanguageChangeActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button
        android:id="@+id/chineseButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:layout_alignParentLeft="true"
        android:text="中文简体"
        />
    <Button
        android:id="@+id/englishButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/chineseButton"
        android:layout_alignTop="@id/chineseButton"
        android:text="English"
        />

</RelativeLayout>

接着是在资源文件中新建一个文件夹values-zh-rCN,在里面新建一个strings.xml,

把默认values文件夹中的strings.xml中的内容Copy至values-zh-rCN中的strings.xml,

再把该文件夹中的中文内容转换为中文,例如<string name="set">setting</string>转换为<string name="set">设置</string>

activity 中的代码

public class LanguageChangeActivity extends Activity {

    private Button chineseButton ;
    private Button englishButton ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_language_change);
        chineseButton = (Button)findViewById(R.id.chineseButton);
        englishButton = (Button)findViewById(R.id.englishButton);
        chineseButton.setOnClickListener(new Button.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                switchLanguage(Locale.SIMPLIFIED_CHINESE);
                Intent intent = new Intent();
                intent.setClass(LanguageChangeActivity.this, LanguageChangeActivity.class);
                startActivity(intent);
            }
        });
        
        englishButton.setOnClickListener(new Button.OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                switchLanguage(Locale.ENGLISH);
                Intent intent = new Intent();
                intent.setClass(LanguageChangeActivity.this, LanguageChangeActivity.class);
                startActivity(intent);
            }
        });
        
    }

     public void switchLanguage(Locale locale) {
         Configuration config = getResources().getConfiguration();// 获得设置对象
         Resources resources = getResources();// 获得res资源对象
         DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。
         config.locale = locale; // 简体中文
         resources.updateConfiguration(config, dm);
 }

还得注意的是:在AndroidManifest.xml中要配置一下

       在activity节点中加上这个属性: android:configChanges="locale"

        添加权限: <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />


PS:此方法只是应用内语言




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值