Android应用内多语言切换

在app内有时候需要用户手动切换语言,以适应不同的使用场景,正常来说如果做了语言适配的话,app语言会跟随系统语言进行自动适配。但有时候希望在app内进行语言选择和设置。

设置app的语言环境,直接上代码

    /**
     * 修改APP语言设置
     * @param locale 如Locale.CHINESE、Locale.ENGLISH等
     */
    public void changeAppLanguage(Context context, Locale locale) {
        Resources res = context.getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        //conf.locale = locale;
        conf.setLocale(locale);
        res.updateConfiguration(conf, dm);
    }


    //设置app语言环境为中文
    changeAppLanguage(context, Locale.CHINESE); 
android应用可以根据语言环境自动适配不同资源目录下的资源,如drawable-zh-xhdpi、drawable-en-xhdpi分别对应中文和英文语言环境的资源。通过上述方法改变语言设置后,app可以自动使用相应的资源目录下的资源文件。

参考:https://www.cnblogs.com/travellife/p/Android-ying-yong-nei-duo-yu-yan-qie-huan.html

 

 

获取app当前的语言环境

    /**
     * 获取当前设置的语言
     * @return 当前的语言,可将结果与Locale.ENGLISH.getLanguage()比较进行判断
     */
    public static String getCurrLanguage(Context context) {
        Locale locale = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            locale = context.getResources().getConfiguration().getLocales().get(0);
        } else {
            locale = context.getResources().getConfiguration().locale;
        }
        return locale.getLanguage();
    }


    //判断当前的语言是否是英文
    Locale.ENGLISH.getLanguage().equals(getCurrLanguage(context));


    String country = locale.getCountry(); //可以借助该方法进行更精细的设置或判断

你可能感兴趣的:(Android开发)