android切換語言廣播
① 安卓手機修改語言設置
如果您使用的是華為手機,可以按照以下方法操作:
1、進入設置 > 系統和更新 > 語言和輸入法 > 語言和地區 ,選擇要使用的語言。
如果語言列表中沒有您要使用的語言,請點擊添加語言,搜索並添加至語言列表後,再選擇語言。
您可從語言列表中刪除某個語言,點擊編輯並根據界面提示操作。
2、點擊當前地區選擇國家和地區,系統界面會根據您選擇地區的文化習慣進行顯示。
② Android:應用多語言切換,國際化實現
生成多種語言的string.xml,裡面放置對應的語言,修改配置(Configuration),重啟之後就會載入對應語言的string.xml。
1:在res目錄下,生成對應的語言包,比如英語:
在res目錄下生成了可看到生成了:
<string name="hello">你好</string>
英語:
<string name="hello">hello</string>
之後就可以使用getResource.getString(R.string.hello),這個字元串會載入相對應的配置的語言。
3:修改語言配置
修改語言配置後,需要重新啟動進程,並且殺死進程。
1:有些手機是可以在設置里直接切換語言的,這個也就是Configuration改變。用戶重新設置系統語言導致應用的語言也會重新設置。Configuration改變,如果在Manifest中不設置android:configChanges忽略掉配置改變,Activity會重新創建,那麼我們就可以在Activity的onCreate中,重新修改語言配置。
2:切換語言後,退出應用,重新進來,你會發現又是系統設置的語言。所以需要在Application開啟時,需要再次切換語言配置。
③ Android 內多語言切換實現
網上有很多安卓內多語言切換的文章,我也看了一些,很多都千篇一律,而且還是有問題,我就自己重新改了一下。整好分享給各位同學,廢話不多說,我們正式開始
我們在點擊切換語言的按鈕時候彈窗dialog 然後用戶可以選擇 簡體中文 英文 繁體中文 跟隨系統 四種選項 ,這是我們基本的需求
首先我們要在資源文件res目錄下面創建多語言的目錄文件夾 values values-en values-zh-rTW values-TW 如圖所示:
我們適配多語言的只需要在 values values-en values-zh-rTW 這個三個目錄下面的string.xml文件裡面寫入對應的引用的文本即可
我們只需要這樣配置就然後在布局的xml文件裡面引用可以達到適配多語言的效果 :
具體引用:
切換的dialog實現這個我用原生的AlertDialog 你們自己可以自定義繼承系統的Dialog來實現
這里的語言種類獲取到的sta是重SharedPreferences 緩存裡面獲取到的因為需要
SharedPreferences 工具類:
我們在dialog點擊事件里發送一個廣播通知 用來觸發刷新
然我們在baseActivity裡面接收廣播重啟activity 來刷新多語言切換
關於Locale
實現多語言切換用到了Locale。Locale里很多常見國家和地區以及語言,如果我們做常見的語言,可以直接調用系統的,比如Locale.CHINESE。但是這次做的繁體中文的適配,略我坑一下。
繁體中文我們直接在Locale 屬性裡面傳入 zh-rTW 但是切換沒有生效 我翻了下源碼只有TW的屬性配置我就要修改了
問題是,我最開始直接這樣寫的:
到此我們說明下開頭提到到為什麼多出了 values-TW目錄 是因為我發現在多語言切換更新 Configuration 中的 locale 屬性 的時候翻開源碼看到繁體中文(泛指港澳台並沒有看到zh-rTW的屬性配置)
所以目前的解決方案就是用values-TW來替代:
我這邊目前是這樣處理來兼容繁體中文切換不生效的做法 ,如果你有更好的方案 麻煩留言大家一起探討。
Android 內多語言的切換網上的文章也挺多的,基本都千篇一律 很多有紕漏 ,這邊也是翻了一下源碼勉強能夠兼容繁體中文, 項目地址
④ Android應用內切換語言
最近接觸到Android 應用內切換語言的問題,研究了兩天,做個記錄先。實現了中文,英文,泰語的切換。測試機器 Nexus5(Android p),HUAWEI榮耀9青春版(8.0.0),XIAOMI mi 4LTE(6.0.1)。
看下效果
定義一個BaseActivity,重寫attachBaseContext方法,在此方法里進行語言切換
LanguageUtil中的attachBaseContext()方法
在attachBaseContext()方法中,我們判斷一下,如果當前api大於24,那麼就調用updateResources()方法更新context。
定義好BaseActivity以後,我們只需要讓我們的Activity都繼承這個基類即可。
自定義Application並在AndroidManifest.xml文件中聲明,在Application的onCreate()方法中,調用更換語言的方法即可。
LanguageUtil中的changeAppLanguage方法
經過上面的操作就可以在7.0以下實現應用內切換語言。
定義一個ChangeLanguageActivity
如果是7.0以下,我們需要調用changeAppLanguage方法, 如果是7.0及以上系統,直接把我們想要切換的語言類型保存在SharedPreferences中,然後重新啟動MainActivity即可。
如果控制項尺寸固定,當切換語言的時候,文字長短發生變化如何解決?
可以使用google提供的新特性來解決。
完整的例子請移步
https://gitee.com/lyyon/InternationDemo
參考鏈接: https://www.jianshu.com/p/4f9db19d9383
1. https://www.jianshu.com/p/32ff13db1f0d#comment-24575608
2. http://www.cnblogs.com/travellife/p/Android-ying-yong-nei-o-yu-yan-qie-huan.html
3. https://yanlu.me/android-7-0-app-language-switch/
4. https://github.com/captain-miao/MultiLanguagesSwitch
5. https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview
⑤ 下載了中英雙語的電影,用安卓手機怎麼調語言就像VCD,可以調左聲道和右聲道來換語言的。安卓手機能
手機語言切換的步驟如下:
1、選擇手機菜單中的「設置 (Settings)」選項。
2、選擇設置菜單中的「語言和鍵盤 (Language和 keyboard) 」選項。
⑥ 安卓手機怎麼語言轉換
手機語言切換的步驟如下:
1、選擇手機菜單中的「設置 (Settings)」選項。
2、選擇設置菜單中的「語言和鍵盤 (Language和 keyboard) 」選項。
⑦ android應用內怎麼設置語言切換
1.在工程res文件下添加對應語種的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();//設置
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:
// 系統默認語言
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();
// 應用內配置語言
Resources resources = getResources();// 獲得res資源對象
Configuration config = resources.getConfiguration();// 獲得設置對象
DisplayMetrics dm = resources.getDisplayMetrics();// 獲得屏幕參數:主要是解析度,像素等。
switch (id) {
case 0:
config.locale = Locale.getDefault(); // 系統默認語言
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);
}
}
⑧ 如何實現Android切換系統語言功能
1打開主菜單,進入【Settings(設置)】菜單,像手機一樣操作,網上拖動屏幕,選擇【Language & Keyboard(語言和鍵盤)】菜單: 2同樣把屏幕往上拖動,知道最後出現【中文(簡體)】的選項,然後選擇它,你的手機就變成了中文界面了
⑨ android 語言切換問題
看看是不是代碼里寫死的,檢查string文件檢查value設置