当前位置: 移动技术网 > IT编程>移动开发>Android > 详解Android更改APP语言模式的实现过程

详解Android更改APP语言模式的实现过程

2019年07月24日  | 移动技术网IT编程  | 我要评论

女处长的厕奴,广州邮政,上海新开楼盘

一、效果图

二、描述

更改android项目中的语言,这个作用于只用于此app,不会作用于整个系统

三、解决方案

(一)布局文件

<linearlayout 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:orientation="vertical"
  android:padding="20dp" >

  <textview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hellow" />

  <button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onclick="changelanguage" 
    android:text="语言切换" />

</linearlayout>

(二)mainactivity主页面

package com.example.chinesepage;

import java.util.locale;

import android.app.activity;
import android.content.intent;
import android.content.res.configuration;
import android.content.res.resources;
import android.os.bundle;
import android.util.displaymetrics;
import android.view.view;
import android.widget.toast;

public class mainactivity extends activity {

  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
  }

  /**
   * 点击按钮,更换语言
   * 
   * @param view
   */
  public void changelanguage(view view) {
    resources resources = getresources();
    configuration configuration = resources.getconfiguration(); // 获取资源配置
    if (configuration.locale.equals(locale.china)) { // 判断当前语言是否是中文
      configuration.locale = locale.english; // 设置当前语言配置为英文
    } else {
      configuration.locale = locale.china; // 设置当前语言配置为中文
    }
    displaymetrics metrics = new displaymetrics();
    resources.updateconfiguration(configuration, metrics); // 更新配置文件
    sendbroadcast(new intent("language")); // 发送广播,广播接受后重新开启此activtiy以重新初始化界面语言.
//    intent intent = new intent(mainactivity.this, mainactivity.class); //或者可以直接跳转mainactivity
//    intent.setflags(intent.flag_activity_no_animation); //去除掉跳转的动画,让用户看起来好像没有跳转的感觉
//    startactivity(intent);
    finish();
  }
}

(三)changereceiver广播类

package com.example.chinesepage;

import android.content.broadcastreceiver;
import android.content.context;
import android.content.intent;

/**
 * 自定义广播类 语言改变后重启activity
 * 
 * @author asus
 * 
 */
public class changereceiver extends broadcastreceiver {
  private intent mintent;

  @override
  public void onreceive(context context, intent intent) {
    mintent = new intent(context, mainactivity.class);
    mintent.addflags(intent.flag_activity_new_task);
    context.startactivity(mintent);
  }
}

(四)在res下创建values-en文件夹,复制string.xml,并且把里面的中文改成英文,实现国际化.

values/strings.xml

<resources>

  <string name="app_name">语言切换</string>
  <string name="hello_world">你好,world!</string>
  <string name="action_settings">设置</string>
  <string name="hellow">你好</string>

</resources>

values-en/strings.xml

<resources>

  <string name="app_name">chinesepage</string>
  <string name="hello_world">hello world!</string>
  <string name="action_settings">settings</string>
  <string name="hellow">hellow</string>

</resources>

(五)注册广播(这个别忘了~)

 <receiver android:name="com.example.chinesepage.changereceiver" >
      <intent-filter>
        <action android:name="language" />
      </intent-filter>
    </receiver>

总结

以上就是详解android更改app语言模式的实现过程的全部内容,希望对大家开发android有所帮助,如果有疑问欢迎留言讨论。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网