以MIUI系統(tǒng)為例,來說明一下切換系統(tǒng)語言步驟:

創(chuàng)新互聯(lián)公司專注于項城企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。項城網(wǎng)站建設(shè)公司,為項城等地區(qū)提供建站服務(wù)。全流程定制設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
1、打開手機設(shè)置應(yīng)用頁面,選擇“系統(tǒng)高級設(shè)置”選項。
2、系統(tǒng)高級設(shè)置頁面中選擇“語言和輸入法”選項。
3、選擇"語言"設(shè)置選項。
4、選擇需要的語言即可。
首先扯點別的:這是第一次在上寫東西,我突然明白為啥這么多人在上寫東西了,因為沒有廣告啊,哈哈。
最近接觸到Android 應(yīng)用內(nèi)切換語言的問題,研究了兩天,做個記錄先。實現(xiàn)了中文,英文,泰語的切換。測試機器 Nexus5(Android p),HUAWEI榮耀9青春版(8.0.0),XIAOMI mi 4LTE(6.0.1)。看下效果
完整的例子在底部
實現(xiàn)步驟
首先需要新建對應(yīng)語言環(huán)境下的資源文件
定義一個BaseActivity,重寫attachBaseContext方法,在此方法里進行語言切換
LanguageUtil中的attachBaseContext()方法
在attachBaseContext()方法中,我們判斷一下,如果當前api大于24,那么就調(diào)用updateResources()方法更新context。
定義好BaseActivity以后,我們只需要讓我們的Activity都繼承這個基類即可。
自定義Application并在AndroidManifest.xml文件中聲明,在Application的onCreate()方法中,調(diào)用更換語言的方法即可。
LanguageUtil中的changeAppLanguage方法
經(jīng)過上面的操作就可以在7.0以下實現(xiàn)應(yīng)用內(nèi)切換語言。
定義一個ChangeLanguageActivity
如果是7.0以下,我們需要調(diào)用changeAppLanguage方法, 如果是7.0及以上系統(tǒng),直接把我們想要切換的語言類型保存在SharedPreferences中,然后重新啟動MainActivity即可。
可以使用google提供的新特性來解決。
完整的例子請移步
參考鏈接:
1.
2.
3.
4.
5.
1?.在工程res文件下添加對應(yīng)語種的values文件,ar:阿拉伯語, en:英語? ? zh_rCN: 簡體中文
截圖如下:
2 .在功能清單文件中對要進行切換acitivity 進行配置添加
android:configChanges="locale"
3?.對語言選擇的處理
public class MainActivity extends Activity {
Context context = MainActivity.this;;
int languageId;
@Override
public void onCreate(Bundle savedInstanceState) {
? ?super.onCreate(savedInstanceState);
? ?read();//設(shè)置
? ?setContentView(R.layout.main);
? ?findViewById(R.id.btn_change).setOnClickListener(new OnClickListener() {
? ? ? ?@Override
? ? ? ?public void onClick(View v) {
? ? ? ? ? ?save();
? ? ? ?}
? ?});
}
//保存
private void save() {
? ?String[] languages = { "默認", "CN", "EN" };
? ?AlertDialog.Builder builder = new AlertDialog.Builder(context,
? ? ? ? ? ?android.R.style.Animation_Dialog);
? ?builder.setTitle("選擇語言");
? ?final SharedPreferences languagePre = context.getSharedPreferences(
? ? ? ? ? ?"language_choice", context.MODE_PRIVATE);
? ?final int id = languagePre.getInt("id", 0);
? ?builder.setSingleChoiceItems(languages, id,
? ? ? ? ? ?new DialogInterface.OnClickListener() {
? ? ? ? ? ? ? ?@Override
? ? ? ? ? ? ? ?public void onClick(DialogInterface arg0, int index) {
? ? ? ? ? ? ? ? ? ?switch (index) {
? ? ? ? ? ? ? ? ? ?case 0:
? ? ? ? ? ? ? ? ? ? ? ?// 系統(tǒng)默認語言
? ? ? ? ? ? ? ? ? ? ? ?languageId = 0;
? ? ? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ?case 1:
? ? ? ? ? ? ? ? ? ? ? ?// 簡體中文
? ? ? ? ? ? ? ? ? ? ? ?languageId = 1;
? ? ? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ?case 2:
? ? ? ? ? ? ? ? ? ? ? ?// 英語
? ? ? ? ? ? ? ? ? ? ? ?languageId = 2;
? ? ? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ?case 3:
? ? ? ? ? ? ? ? ? ? ? ?// 阿拉伯語
? ? ? ? ? ? ? ? ? ? ? ?languageId = 3;
? ? ? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ?default:
? ? ? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ?languagePre.edit().putInt("id", languageId).commit();
? ? ? ? ? ? ? ?}
? ? ? ? ? ?});
? ?// 保存
? ?builder.setPositiveButton("保存", new DialogInterface.OnClickListener() {
? ? ? ?@Override
? ? ? ?public void onClick(DialogInterface dialog, int which) {
? ? ? ? ? ?((Activity) context).finish();
? ? ? ? ? ?Intent intent = new Intent();
? ? ? ? ? ?intent.setClass(context, MainActivity.class);
? ? ? ? ? ?context.startActivity(intent);
? ? ? ?}
? ?});
? ?builder.show();
}
//讀取
private void read() {
? ?SharedPreferences languagePre = getSharedPreferences("language_choice",
? ? ? ? ? ?Context.MODE_PRIVATE);
? ?int id = languagePre.getInt("id", 0);
? ?Log.d("MainActivity", "langauge_id=" + id);
? ?Toast.makeText(context, "langauge_id=" + id, Toast.LENGTH_LONG).show();
? ?// 應(yīng)用內(nèi)配置語言
? ?Resources resources = getResources();// 獲得res資源對象
? ?Configuration config = resources.getConfiguration();// 獲得設(shè)置對象
? ?DisplayMetrics dm = resources.getDisplayMetrics();// 獲得屏幕參數(shù):主要是分辨率,像素等。
? ?switch (id) {
? ?case 0:
? ? ? ?config.locale = Locale.getDefault(); // 系統(tǒng)默認語言
? ? ? ?break;
? ?case 1:
? ? ? ?config.locale = Locale.SIMPLIFIED_CHINESE; // 簡體中文
? ? ? ?break;
? ?case 2:
? ? ? ?config.locale = Locale.ENGLISH; // 英文
? ? ? ?break;
? ?default:
? ? ? ?config.locale = Locale.getDefault();
? ? ? ?break;
? ?}
? ?resources.updateConfiguration(config, dm);
}
}
1打開主菜單,進入【Settings(設(shè)置)】菜單,像手機一樣操作,網(wǎng)上拖動屏幕,選擇【Language Keyboard(語言和鍵盤)】菜單: 2同樣把屏幕往上拖動,知道最后出現(xiàn)【中文(簡體)】的選項,然后選擇它,你的手機就變成了中文界面了
Android國際化語言適配分為兩種
1.更改手機系統(tǒng)語言后,APP的語言也會跟著變化
2.只改變自己APP的語言,不受手機系統(tǒng)語言的影響,不影響其他APP的語言,可以參考微信的切換語言的效果。
只需要創(chuàng)建不同語言的values即可
具體操作參考? 簡單的Android客戶端國際化(語言適配)方案
操作的時候要注意: 當選擇所要切換的語言后,則進行修改Config以及重啟APP,一定要將選擇的語言保存到SP中,且在activity中的oncreate中將SP中存儲的語言取出來重新設(shè)置Config,否則當重啟APP后,還是會跟系統(tǒng)語言一樣。?
具體操作參考? Android應(yīng)用程序內(nèi)部切換語言及自定義語言
標題名稱:android語言切換,android 應(yīng)用內(nèi)切換語言
本文路徑:http://chinadenli.net/article27/dseecjj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、軟件開發(fā)、品牌網(wǎng)站設(shè)計、Google、響應(yīng)式網(wǎng)站、標簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)