日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品久久久久久中文字幕人妻最新 | 爱视频福利网 | 欧美成人乱码一区二区三区 | 黑人激情视频 | 可以直接观看的av | 国产v片在线观看 | 护士人妻hd中文字幕 | 久久人妻少妇嫩草av | 欧美日韩精品电影 | 18成人在线观看 | 成人在线小视频 | 巨物撞击尤物少妇呻吟 | 在线视频一区二区三区 | 欧美亚洲在线播放 | 黄色a级片视频 | 国产亚洲福利 | 成人国产亚洲 | 亚洲 国产 日韩 欧美 | 91原创国产| 婷婷精品视频 | 图片区亚洲色图 | 亚洲欧美日韩另类在线 | 国产欧美日韩亚洲 | 日韩国产欧美在线视频 | 影音先锋亚洲成aⅴ人在 | 女性女同性aⅴ免费观女性恋 | 国产一区二区三区在线观看视频 | av色播| 免费黄色在线网站 | 成年人在线视频 | 久久午夜福利电影 | 日本一区中文 | 九九久久久| 青青草在线免费视频 | 不许穿内裤随时挨c调教h苏绵 | 亚洲一区激情 | 国精品一区二区三区 | 成人免费片库 | 亚洲依依| 日韩欧美高清片 | 亚洲成人一区 | 亚洲综合另类小说 | 国产精品国产三级国产aⅴ 欧美bbbbbbbbbbbb18av | 性色欲网站人妻丰满中文久久不卡 | 97潮色| 天天操夜夜操夜夜操 | 久久精品小视频 | 特级黄色大片 | 成人黄色免费网址 | 日韩小视频 | 亚洲不卡在线 | 精品国产欧美 | 欧美乱做爰xxxⅹ久久久 | 波多野结衣黄色 | 欧美图片一区二区三区 | 日本女人毛片 | 九九九九精品九九九九 | 99精品福利| www,xxx69 japan| 国产精品人人做人人爽人人添 | 国产最新在线观看 | 亚洲人一区 | 深夜福利一区二区 | 最近免费中文字幕中文高清百度 | 最新毛片基地 | 国产美女裸体无遮挡免费视频 | 亚洲麻豆一区二区三区 | 久久手机免费视频 | 天天摸天天操天天爽 | 成人午夜免费观看 | 椎名由奈av一区二区三区 | 麻豆免费av | 国产成人亚洲精品无码h在线 | 一区二区不卡视频在线观看 | 婷婷国产成人精品视频 | 日韩欧美一区二区三区在线观看 | 国产理论在线 | 国产精品日 | 亚洲情网 | 77久久| 亚洲欧美中文日韩在线 | 免费成人结看片 | 中国农村一级片 | 久久久久国产精品无码免费看 | 毛片网站入口 | 欧美日韩国产麻豆 | 亚洲久草视频 | a级片视频网站 | 一本大道av | 蜜桃视频久久一区免费观看入口 | 中文字幕无码精品亚洲 | 美女黄色录像 | 日鲁鲁| 久久久久久久久亚洲 | 色悠悠网址 | 久久这里只有精品首页 | 99久久精 | 夜夜高潮夜夜爽国产伦精品 | 国产91在线视频 |