一、android多语言

这里以汉语 英文 印尼文为例记录一下实现流程

1.1,value文件夹下添加不同语言的String.xml文件,分别是

values默认

    多语言例子    中文    英文    印尼文    这是内容显示区    选择一个语言
values-en英文

    mulitiLanguage    Chinese    English    Bahasa Indonesia    Hello World!    Choose a language
values-in印尼文

    Multi-bahasa    Cina    Inggris    Indonesia    Hello dunia!    Pilih bahasa


1.2,创建BaseActivity类,然后将多语言的切换放到这里。原因是我们可以在父类里面调用recreate()方法切换多语言(当然也可以killProcess重启应用)

在这里我们的处理方法是将用户的语言选择用Sharepreference存储起来,然后在应用一开启就查找Sharepreference中的值,选择对应的语言,然后这里是多语言的核心代码

Configuration config = getResources().getConfiguration();config.locale = new Locale(sta);getResources().updateConfiguration(config, getResources().getDisplayMetrics());
关于BaseActivity的所有代码也贴出来
public class BaseActivity extends Activity{    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        EventBus.getDefault().register(this);        changeAppLanguage();    }    @Subscribe(threadMode = ThreadMode.MAIN)    public void onEvent(String str) {        switch (str) {            case "EVENT_REFRESH_LANGUAGE":                changeAppLanguage();                recreate();//刷新界面                break;        }    }    public void changeAppLanguage() {        String sta = getLanguageLocal(this);        if(sta != null && !"".equals(sta)){            // 本地语言设置            Configuration config = getResources().getConfiguration();            config.locale = new Locale(sta);            /*            * todo 对于config的locale属性配置,这里还可以这样写            * config.locale = Locale.TRADITIONAL_CHINESE;            config.locale = Locale.ENGLISH;            config.locale = Locale.SIMPLIFIED_CHINESE;            config.locale = Locale.TRADITIONAL_CHINESE;            * */            getResources().updateConfiguration(config, getResources().getDisplayMetrics());        }    }    public static void setLanguageLocal(Context context, String language){        SharedPreferences preferences;        SharedPreferences.Editor editor;        preferences = PreferenceManager.getDefaultSharedPreferences(context);        editor = preferences.edit();        editor.putString("language", language);        editor.commit();    }    public static String getLanguageLocal(Context context){        SharedPreferences preferences;        preferences = PreferenceManager.getDefaultSharedPreferences(context);        String language = preferences.getString("language", "");        return language;    }    @Override    protected void onDestroy() {        super.onDestroy();        EventBus.getDefault().unregister(this);    }}

1.3,调用的时候直接用EventBus发送事件就可以了

public class SettingActivity extends BaseActivity{    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        setTitle("设置Activity");        final String[] cities = {getString(R.string.lan_chinese), getString(R.string.lan_en),getString(R.string.lan_in)};//dialog显示用的        final String[] locals = {"zh_CN", "en","in"};//保存到本地,把用户选择的当前语言存储起来        Button button = findViewById(R.id.btn_setting);        button.setText("Language");        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                AlertDialog.Builder builder = new AlertDialog.Builder(SettingActivity.this);                builder.setIcon(R.mipmap.ic_launcher);                builder.setTitle(R.string.select_language);                builder.setItems(cities, new DialogInterface.OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        setLanguageLocal(SettingActivity.this, locals[which]);                        EventBus.getDefault().post("EVENT_REFRESH_LANGUAGE");                    }                });                builder.show();            }        });    }}

1.4,然后这里贴一下常用的多语言文件夹文件

Arabic, Egypt (ar_EG) -----------------------------阿拉伯语,埃及Arabic, Israel (ar_IL) -------------------------------阿拉伯语,以色列Bulgarian, Bulgaria (bg_BG) ---------------------保加利亚语,保加利亚Catalan, Spain (ca_ES) ---------------------------加泰隆语,西班牙Czech, Czech Republic (cs_CZ) -----------------捷克语,捷克共和国Danish, Denmark(da_DK) ------------------------丹麦语,丹麦German, Austria (de_AT) -------------------------德语,奥地利German, Switzerland (de_CH) -------------------德语,瑞士German, Germany (de_DE) ----------------------德语,德国German, Liechtenstein (de_LI) ------------------德语,列支敦士登的Greek, Greece (el_GR) ----------------------------希腊语,希腊English, Australia (en_AU) -------------------------英语,澳大利亚English, Canada (en_CA) --------------------------英语,加拿大English, Britain (en_GB) ----------------------------英语,英国English, Ireland (en_IE) -----------------------------英语,爱尔兰English, India (en_IN) --------------------------------英语,印度English, New Zealand (en_NZ) ---------------------英语,新西兰English, Singapore(en_SG) --------------------------英语,新加坡English, US (en_US) -----------------------------------英语,美国English, Zimbabwe (en_ZA) --------------------------英语,津巴布韦Spanish (es_ES) ----------------------------------------西班牙Spanish, US (es_US) -----------------------------------西班牙语,美国Finnish, Finland (fi_FI) ---------------------------------芬兰语,芬兰French, Belgium (fr_BE) -------------------------------法语,比利时French, Canada (fr_CA) -------------------------------法语,加拿大French, Switzerland (fr_CH) --------------------------法语,瑞士French, France (fr_FR) --------------------------------法语,法国Hebrew, Israel (he_IL) ---------------------------------希伯来语,以色列Hindi, India (hi_IN) -------------------------------------印地语,印度Croatian, Croatia (hr_HR) ----------------------------克罗地亚语,克罗地亚Hungarian, Hungary (hu_HU) ------------------------匈牙利语,匈牙利Indonesian, Indonesia (id_ID) ------------------------印尼语,印尼Italian, Switzerland (it_CH) ----------------------------意大利语,瑞士Italian, Italy (it_IT) ---------------------------------------意大利语,意大利Japanese (ja_JP) ----------------------------------------日语Korean (ko_KR) ------------------------------------------朝鲜语Lithuanian, Lithuania (lt_LT) --------------------------立陶宛语,立陶宛Latvian, Latvia (lv_LV) ---------------------------------拉托维亚语,拉托维亚Norwegian-Bokmol, Norway(nb_NO) ---------------挪威语,挪威Dutch, Belgium (nl_BE) --------------------------------荷兰语,比利时Dutch, Netherlands (nl_NL) ---------------------------荷兰语,荷兰Polish (pl_PL) -------------------------------------------波兰Portuguese, Brazil (pt_BR) ---------------------------葡萄牙语,巴西Portuguese, Portugal (pt_PT) ------------------------葡萄牙语,葡萄牙Romanian, Romania (ro_RO) ------------------------罗马尼亚语,罗马尼亚Russian (ru_RU) ----------------------------------------俄语Slovak, Slovakia (sk_SK) ------------------------------斯洛伐克语,斯洛伐克Slovenian, Slovenia (sl_SI) ---------------------------斯洛文尼亚语,斯洛文尼亚Serbian (sr_RS) ----------------------------------------塞尔维亚语Swedish, Sweden (sv_SE) ----------------------------瑞典语,瑞典Thai, Thailand (th_TH) --------------------------------泰语,泰国Tagalog, Philippines (tl_PH) --------------------------菲律宾语,菲律宾Turkish, Turkey (tr_TR) -------------------------------土耳其语,土耳其Ukrainian, Ukraine (uk_UA) --------------------------联合王国Vietnamese, Vietnam (vi_VN) -----------------------越南语,越南Chinese, PRC (zh_CN)--------------------------------中文,中国Chinese, Taiwan (zh_TW)-----------------------------中文,台湾


二、加载自定义字体

这里我们首先要将ttf字体文件放入src->main->assets->fronts文件夹下,然后生命一个Typeface对象用户字体的获取,最后调用TextView的setTypeface方法即可

private void setTextFont(){        // 加载自定义字体        try{            TEXT_TYPE = Typeface.createFromAsset(getAssets(),"fronts/black_simplified.TTF");        }catch(Exception e){            Log.i("MainActivity","加载第三方字体失败。") ;            TEXT_TYPE = null ;        }        if(TEXT_TYPE != null){            textView.setTypeface(TEXT_TYPE) ;        }    }

猛戳这里下载demo


更多相关文章

  1. 关于Android(安卓)国际化遇到的一些坑
  2. 2012年|一个新的开始
  3. Android国际化中用到的国家/地区 语言缩写代码
  4. Android(安卓)Quantity Strings 的 getQuantityString方法取值问
  5. Android(安卓)appWidget——每日一句应用开发
  6. 关于Android(安卓)app 国际化 中英文翻译的细节处理
  7. Android(安卓)Studio如何格式化XML代码顺序。
  8. Android(安卓)多语言与国际化
  9. Android(安卓)App的国际化-代码里实现

随机推荐

  1. Android入门二(五大布局)
  2. [置顶] Android增量更新与CMake构
  3. 自定义视图(组合控件)
  4. 从gpu到chromium compositor(cc)详解andr
  5. Android 5.X Activity过渡动画,以及漂亮的
  6. GridView中实现元素填充剩余空间(自适应)
  7. android基础--获取sdcard的总容量
  8. android studio中的文本替换
  9. 测试Android真机访问电脑主机web项目服务
  10. Android Studio每日小技巧