真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android開發(fā)中怎么在App中實現(xiàn)一個內(nèi)語言切換功能

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Android開發(fā)中怎么在App中實現(xiàn)一個內(nèi)語言切換功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都做網(wǎng)站、網(wǎng)站設(shè)計介紹好的網(wǎng)站是理念、設(shè)計和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)建站擁有的網(wǎng)站設(shè)計理念、多方位的設(shè)計風(fēng)格、經(jīng)驗豐富的設(shè)計團隊。提供PC端+手機端網(wǎng)站建設(shè),用營銷思維進行網(wǎng)站設(shè)計、采用先進技術(shù)開源代碼、注重用戶體驗與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

代碼實現(xiàn):

布局文件(Data-Binding模式),很簡單就是兩行文字

<?xml version="1.0" encoding="utf-8"?>

 
 
 
 

從實例中我們可以看到右上角是有Menu

<?xml version="1.0" encoding="utf-8"?>


 
 
 
 

(既然是多語言,所以就要有N個strings)

Android開發(fā)中怎么在App中實現(xiàn)一個內(nèi)語言切換功能

本案例我創(chuàng)建了4種語言。

好的,Menu的布局寫完了,接下來就是實現(xiàn)Menu功能,記住實現(xiàn)Menu就兩套代碼,一個 onCreateOptionsMenu , 另一個是 onOptionsItemSelected 。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
 getMenuInflater().inflate(R.menu.menu, menu);
 return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
 int id = item.getItemId();
 if (id == R.id.language_english) {
 updateViews("en");
 } else if (id == R.id.language_simplified_chinese) {
 updateViews("zh");
 } else if (id == R.id.language_turkish) {
 updateViews("tr");
 } else if (id == R.id.language_japanese) {
 updateViews("ja");
 }
 return super.onOptionsItemSelected(item);
}

在這里,可以看到,我們自定義一個 updateViews() 方法,用來實現(xiàn)切換預(yù)言時界面的改變

private void updateViews(String languageCode) {
 Context context = LocaleHelper.setLocale(this, languageCode);
 Resources resources = context.getResources();
 mBinding.titleTextView.setText(resources.getString(R.string.title));
 mBinding.descTextView.setText(resources.getString(R.string.desc));
 setTitle(resources.getString(R.string.toolbar_title));
}

公布一個 語言判斷的類 LocaleHelper

public class LocaleHelper {
 private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language";
 public static Context onAttach(Context context) {
 String lang = getPersistedData(context, Locale.getDefault().getLanguage());
 return setLocale(context, lang);
 }
 public static Context onAttach(Context context, String defaultLanguage) {
 String lang = getPersistedData(context, defaultLanguage);
 return setLocale(context, lang);
 }
 public static String getLanguage(Context context) {
 return getPersistedData(context, Locale.getDefault().getLanguage());
 }
 public static Context setLocale(Context context, String language) {
 persist(context, language);
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
  return updateResources(context, language);
 }
 return updateResourcesLegacy(context, language);
 }
 private static String getPersistedData(Context context, String defaultLanguage) {
 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
 return preferences.getString(SELECTED_LANGUAGE, defaultLanguage);
 }
 private static void persist(Context context, String language) {
 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
 SharedPreferences.Editor editor = preferences.edit();
 editor.putString(SELECTED_LANGUAGE, language);
 editor.apply();
 }
 @TargetApi(Build.VERSION_CODES.N)
 private static Context updateResources(Context context, String language) {
 Locale locale = new Locale(language);
 Locale.setDefault(locale);
 Configuration configuration = context.getResources().getConfiguration();
 configuration.setLocale(locale);
 return context.createConfigurationContext(configuration);
 }
 @SuppressWarnings("deprecation")
 private static Context updateResourcesLegacy(Context context, String language) {
 Locale locale = new Locale(language);
 Locale.setDefault(locale);
 Resources resources = context.getResources();
 Configuration configuration = resources.getConfiguration();
 configuration.locale = locale;
 resources.updateConfiguration(configuration, resources.getDisplayMetrics());
 return context;
 }
}

最后還要做的操作就是,自定義一個Application類,用來設(shè)定App的默認語言(當(dāng)然了,要將這個Application應(yīng)用到Manifest中)

public class BaseApplication extends Application {
 @Override
 protected void attachBaseContext(Context base) {
 super.attachBaseContext(LocaleHelper.onAttach(base, "en"));
 }
}

上述就是小編為大家分享的Android開發(fā)中怎么在App中實現(xiàn)一個內(nèi)語言切換功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前題目:Android開發(fā)中怎么在App中實現(xiàn)一個內(nèi)語言切換功能
文章地址:http://weahome.cn/article/jjjehc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部