一、建立不同語言的strings.xml
按照上述步驟,建立 “簡體” “繁體” “英文” 的strings.xml
二、demo示例
1、工具類
public class LanguageUtils {
/**
* 切換語言環境
*
* @param context
* @param locale
*/
public static void switchLanguage(Context context, Locale locale) {
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
conf.setLocale(locale);
LocaleList localeList = new LocaleList(locale);
LocaleList.setDefault(localeList);
conf.setLocales(localeList);
} else {
conf.setLocale(locale);
}
res.updateConfiguration(conf, dm);
}
/**
* 擷取目前語言環境
*
* @param context
* @return
*/
public static String getDefaultLanguage(Context context) {
Resources resources = context.getResources();
Configuration config = resources.getConfiguration();
Locale contextLocale = config.locale;
return contextLocale.toString();
}
}
2、MainActivity
Activity
public class MainActivity extends BaseAbstractActivity {
@BindView(R.id.id_tv_default_language)
TextView tvDefaultLanguage;
@BindView(R.id.id_btn_cn)
TextView btnCN;
@BindView(R.id.id_btn_hk)
TextView btnHK;
@BindView(R.id.id_btn_us)
TextView btnUS;
@BindView(R.id.id_btn_skip)
TextView btnSkip;
@Override
protected int getLayoutId() {
return R.layout.activity_main;
}
@Override
protected void init() {
//顯示目前語言環境
tvDefaultLanguage.setText(LanguageUtils.getDefaultLanguage(getActivity()));
//切換簡體
btnCN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LanguageUtils.switchLanguage(getActivity(), Locale.SIMPLIFIED_CHINESE);
actionActivity();
}
});
//切換繁體
btnHK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LanguageUtils.switchLanguage(getActivity(), Locale.TRADITIONAL_CHINESE);
actionActivity();
}
});
//切換英文
btnUS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LanguageUtils.switchLanguage(getActivity(), Locale.US);
tvDefaultLanguage.setText(LanguageUtils.getDefaultLanguage(getApplicationContext()));
actionActivity();
}
});
//skip
btnSkip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getActivity(), TestActivity.class));
}
});
}
public void actionActivity() {
Intent intent = new Intent(getActivity(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
@Override
protected BaseAbstractActivity getActivity() {
return this;
}
}
layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/id_tv_default_language"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:background="@android:color/darker_gray"
android:gravity="center_horizontal"
android:padding="30dp"
android:text=""
android:textColor="@android:color/white"
android:textSize="30dp" />
<TextView
android:id="@+id/id_btn_cn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:background="@android:color/black"
android:gravity="center_horizontal"
android:padding="30dp"
android:text="@string/STRING_01"
android:textColor="@android:color/white"
android:textSize="30dp" />
<TextView
android:id="@+id/id_btn_hk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:background="@android:color/black"
android:gravity="center_horizontal"
android:padding="30dp"
android:text="@string/STRING_02"
android:textColor="@android:color/white"
android:textSize="30dp" />
<TextView
android:id="@+id/id_btn_us"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:background="@android:color/black"
android:gravity="center_horizontal"
android:padding="30dp"
android:text="@string/STRING_03"
android:textColor="@android:color/white"
android:textSize="30dp" />
<TextView
android:id="@+id/id_btn_skip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:background="@android:color/holo_blue_light"
android:gravity="center_horizontal"
android:padding="30dp"
android:text="skip"
android:textColor="@android:color/white"
android:textSize="30dp" />
</LinearLayout>
2、TestActivity
public class TestActivity extends BaseAbstractActivity {
@BindView(R.id.id_tv_show)
TextView tvShow;
@Override
protected int getLayoutId() {
return R.layout.act_test;
}
@Override
protected void init() {
}
@Override
protected BaseAbstractActivity getActivity() {
return this;
}
}
layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/id_tv_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/STRING_00"
android:textSize="30dp" />
</RelativeLayout>