日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android切换泰语,Android应用内切换语言

發(fā)布時間:2023/12/4 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android切换泰语,Android应用内切换语言 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先扯點(diǎn)別的:這是第一次在簡書上寫東西,我突然明白為啥這么多人在簡書上寫東西了,因?yàn)闆]有廣告啊,哈哈。

最近接觸到Android 應(yīng)用內(nèi)切換語言的問題,研究了兩天,做個記錄先。實(shí)現(xiàn)了中文,英文,泰語的切換。測試機(jī)器 Nexus5(Android p),HUAWEI榮耀9青春版(8.0.0),XIAOMI mi 4LTE(6.0.1)。看下效果

language.gif

完整的例子在底部

實(shí)現(xiàn)步驟

首先需要新建對應(yīng)語言環(huán)境下的資源文件

微信截圖_20180605205842.png

對于Android7.0及以上版本

定義一個BaseActivity,重寫attachBaseContext方法,在此方法里進(jìn)行語言切換

public class BaseActivity extends AppCompatActivity {

/**

* 此方法先于 onCreate()方法執(zhí)行

* @param newBase

*/

@Override

protected void attachBaseContext(Context newBase) {

//獲取我們存儲的語言環(huán)境 比如 "en","zh",等等

String language = SpUtil.getInstance(App.getContext()).getString(SpUtil.LANGUAGE);

//attach 對應(yīng)語言環(huán)境下的context

super.attachBaseContext(LanguageUtil.attachBaseContext(newBase, language));

}

}

LanguageUtil中的attachBaseContext()方法

public static Context attachBaseContext(Context context, String language) {

Log.d(TAG, "attachBaseContext: "+Build.VERSION.SDK_INT);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

return updateResources(context, language);

} else {

return context;

}

}

@TargetApi(Build.VERSION_CODES.N)

private static Context updateResources(Context context, String language) {

Resources resources = context.getResources();

Locale locale = LanguageUtil.getLocaleByLanguage(language);

Configuration configuration = resources.getConfiguration();

configuration.setLocale(locale);

configuration.setLocales(new LocaleList(locale));

return context.createConfigurationContext(configuration);

}

在attachBaseContext()方法中,我們判斷一下,如果當(dāng)前api大于24,那么就調(diào)用updateResources()方法更新context。

定義好BaseActivity以后,我們只需要讓我們的Activity都繼承這個基類即可。

對于Android7.0及以下版本

自定義Application并在AndroidManifest.xml文件中聲明,在Application的onCreate()方法中,調(diào)用更換語言的方法即可。

public class App extends Application {

private static Context context;

private final String TAG = getClass().getSimpleName();

@Override

public void onCreate() {

super.onCreate();

context = this;

/**

* 對于7.0以下,需要在Application創(chuàng)建的時候進(jìn)行語言切換

*/

String language = SpUtil.getInstance(this).getString(SpUtil.LANGUAGE);

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {

LanguageUtil.changeAppLanguage(App.getContext(), language);

}

}

public static Context getContext() {

return context;

}

}

微信截圖_20180605211204.png

LanguageUtil中的changeAppLanguage方法

/**

* @param context

* @param newLanguage 想要切換的語言類型 比如 "en" ,"zh"

*/

@SuppressWarnings("deprecation")

public static void changeAppLanguage(Context context, String newLanguage) {

if (TextUtils.isEmpty(newLanguage)) {

return;

}

Resources resources = context.getResources();

Configuration configuration = resources.getConfiguration();

//獲取想要切換的語言類型

Locale locale = getLocaleByLanguage(newLanguage);

configuration.setLocale(locale);

// updateConfiguration

DisplayMetrics dm = resources.getDisplayMetrics();

resources.updateConfiguration(configuration, dm);

}

經(jīng)過上面的操作就可以在7.0以下實(shí)現(xiàn)應(yīng)用內(nèi)切換語言。

手動切換語言

定義一個ChangeLanguageActivity

public void onClick(View view) {

String language = null;

switch (view.getId()) {

case R.id.btn_chinese:

//切換為簡體中文

language = LanguageType.CHINESE.getLanguage();

break;

case R.id.btn_english:

//切換為英語

language = LanguageType.ENGLISH.getLanguage();

break;

case R.id.btn_thailand:

//切換為泰語

language = LanguageType.THAILAND.getLanguage();

break;

default:

break;

}

changeLanguage(language);

}

/**

* 如果是7.0以下,我們需要調(diào)用changeAppLanguage方法,

* 如果是7.0及以上系統(tǒng),直接把我們想要切換的語言類型保存在SharedPreferences中,然后重新啟動MainActivity即可

* @param language

*/

private void changeLanguage(String language) {

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {

LanguageUtil.changeAppLanguage(App.getContext(), language);

}

SpUtil.getInstance(this).putString(SpUtil.LANGUAGE, language);

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

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

finish();

}

如果是7.0以下,我們需要調(diào)用changeAppLanguage方法, 如果是7.0及以上系統(tǒng),直接把我們想要切換的語言類型保存在SharedPreferences中,然后重新啟動MainActivity即可。

如果控件尺寸固定,當(dāng)切換語言的時候,文字長短發(fā)生變化如何解決?

可以使用google提供的新特性來解決。

總結(jié)

以上是生活随笔為你收集整理的Android切换泰语,Android应用内切换语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。