安卓换语言java_【Android 多语言切换简单实例分享】

一.Android多语言切换

Android应用的开发不可能仅仅针对某一个国家或者区域使用,各国间语言文化各不同样,因此一个优秀的APP必须支持多种语言,为了实现这个特性,Android给出了一个解决方案,在res文件夹下通过values+语言编码来实现多国语言的支持(中间採用连字符号-连接)。比如:values-es代表英文,假设你决定了你的应用要支持多国语言。那么你就必须新建多种values-XXX的多语言支持文件,以下通过一个样例来看看主要的使用方式,先看下效果图:

f816cfd931774414bbac40f3840a4f05.gif

1.project结构

cd0a42b975bdd7c6428759fdaaf453d9.png

注:主要看下res/values-en/strings.xml代表英文字符串资源文件,res/values-zh/strings.xml代表中文.

res/values-en/strings.xml

SwitchLanguage

This is an instance of Android

Switch Language

English

Chinese

Jump to Next Activity

The language of the page has changed, too.

You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.

res/values-zh/strings.xml

切换语言

这是一个Android实例

切换语言

英语

中文

跳转到还有一个页面

这个页面语言也发生了变化

你不能改变你的过去。但你能够让你的未来变得更美好。一旦时间浪费了,生命就浪费了。

2.代码实现

BaseActivity.java

public class BaseActivity extends Activity

{

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

// 初始化PreferenceUtil

PreferenceUtil.init(this);

// 依据上次的语言设置,又一次设置语言

switchLanguage(PreferenceUtil.getString("language", "zh"));

}

/**

*

*

*

*@param language

*@see [类、类#方法、类#成员]

*/

protected void switchLanguage(String language)

{

// 设置应用语言类型

Resources resources = getResources();

Configuration config = resources.getConfiguration();

DisplayMetrics dm = resources.getDisplayMetrics();

if (language.equals("en"))

{

config.locale = Locale.ENGLISH;

}

else

{

// 中文简体

config.locale = Locale.SIMPLIFIED_CHINESE;

}

resources.updateConfiguration(config, dm);

// 保存设置语言的类型

PreferenceUtil.commitString("language", language);

}

}

2、 MainActivity.java

public class MainActivity extends BaseActivity implements OnClickListener{

private Dialog mDialog;

private TextView textShow;

private Button button;

private Button button2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

TextView textView = (TextView) findViewById(R.id.text);

button = (Button) findViewById(R.id.btn);

button2 = (Button) findViewById(R.id.btn_2);

textShow = (TextView)findViewById(R.id.text_show);

textView.setText(R.string.hello_world);

button.setText(R.string.switch_language);

//监听切换语言按钮,弹出dialog选择语言

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if (mDialog == null) {

LayoutInflater inflater = getLayoutInflater();

View layout = inflater.inflate(R.layout.dialog_select_lanuage,null);

TextView english = (TextView) layout.findViewById(R.id.select_english);

TextView chinese = (TextView) layout.findViewById(R.id.select_chinese);

mDialog = new Dialog(MainActivity.this, R.style.Custom_Dialog_Theme);

mDialog.setCanceledOnTouchOutside(false);

english.setOnClickListener(MainActivity.this);

chinese.setOnClickListener(MainActivity.this);

mDialog.setContentView(layout);

}

mDialog.show();

}

});

button2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent it = new Intent(MainActivity.this, SecondActivity.class);

startActivity(it);

}

});

}

@Override

public void onClick(View v) {

mDialog.dismiss();

switch (v.getId()) {

case R.id.select_english:

//切换为英文

switchLanguage("en");

break;

case R.id.select_chinese:

//切换为中文

switchLanguage("zh");

break;

default:

break;

}

//更新语言后。destroy当前页面,又一次绘制

finish();

Intent it = new Intent(MainActivity.this, MainActivity.class);

startActivity(it);

}

}

activity_main.xml

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=".MainActivity" >

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:text="@string/hello_world" />

android:id="@+id/btn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@+id/text"

android:layout_centerHorizontal="true"

android:layout_marginTop="15dp"

android:text="@string/switch_language" />

android:id="@+id/btn_2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@+id/btn"

android:layout_centerHorizontal="true"

android:layout_marginTop="15dp"

android:text="@string/jump" />

android:id="@+id/text_show"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerInParent="true"

android:textSize="18sp"

android:text="@string/showtext" />

3、 工具类PreferenceUtil.java

public class PreferenceUtil {

private static SharedPreferences mSharedPreferences = null;

private static Editor mEditor = null;

public static void init(Context context){

if (null == mSharedPreferences) {

mSharedPreferences = android.preference.PreferenceManager.getDefaultSharedPreferences(context) ;

}

}

public static void removeKey(String key){

mEditor = mSharedPreferences.edit();

mEditor.remove(key);

mEditor.commit();

}

public static void removeAll(){

mEditor = mSharedPreferences.edit();

mEditor.clear();

mEditor.commit();

}

public static void commitString(String key, String value){

mEditor = mSharedPreferences.edit();

mEditor.putString(key, value);

mEditor.commit();

}

public static String getString(String key, String faillValue){

return mSharedPreferences.getString(key, faillValue);

}

public static void commitInt(String key, int value){

mEditor = mSharedPreferences.edit();

mEditor.putInt(key, value);

mEditor.commit();

}

public static int getInt(String key, int failValue){

return mSharedPreferences.getInt(key, failValue);

}

public static void commitLong(String key, long value){

mEditor = mSharedPreferences.edit();

mEditor.putLong(key, value);

mEditor.commit();

}

public static long getLong(String key, long failValue) {

return mSharedPreferences.getLong(key, failValue);

}

public static void commitBoolean(String key, boolean value){

mEditor = mSharedPreferences.edit();

mEditor.putBoolean(key, value);

mEditor.commit();

}

public static Boolean getBoolean(String key, boolean failValue){

return mSharedPreferences.getBoolean(key, failValue);

}

}

4、 SecondActivity.java是要跳转的Activity,比較简单,仅仅有一个TextView用来显示文本,语言切换。文本语言也随之切换。

public class SecondActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_second);

}

}

activity_second.xml

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=".MainActivity" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:text="@string/change" />

样例比較简单,关键代码都有凝视,有问题欢迎留言讨论,共同学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值