精华内容
下载资源
问答
  • Android 多语言 切换

    2020-06-19 17:59:56
    Android 多语言切换AndroidStudio开发环境。SDK 28 编译通过。支持 Android 8.0以上版本。
  • android多语言切换

    2017-03-09 18:29:35
    android 多语言切换。代码极其简洁,易懂。
  • android 多语言切换

    2015-04-16 16:07:18
    仿微信,apk内 多语言切换
  • Android 多语言切换

    千次阅读 2020-08-22 16:42:59
    为了实现这个特性,Android给出了一个解决方案,在res文件夹下通过values+语言编码来实现多国语言的支持(中间採用连字符号-连接)比如:values-es代表英文,在网上看过不少关于多语言切换的文章,但都没有达到自己...

    前言:Android应用的开发不可能仅仅针对某一个国家或者区域使用,因此APP必须支持多种语言,为了实现这个特性,Android给出了一个解决方案,在res文件夹下通过values+语言编码来实现多国语言的支持(中间採用连字符号-连接)比如:values-es代表英文,在网上看过不少关于多语言切换的文章,但都没有达到自己的效果。

    1、在项目res目录下新建需要的语言配置文件

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    这里新建了3种语言文字,需要其他语种的自行添加
    语种简称
    中文(中国)values-zh-rCN
    中文(中国台湾)values-zh-rTW
    中文(中国香港)values-zh-rHK
    英语(美国)values-en-rUS
    英语(英国)values-en-rGB
    英文(澳大利亚)values-en-rAU
    英文(加拿大)values-en-rCA
    英文(爱尔兰)values-en-rIE
    英文(印度)values-en-rIN
    英文(新西兰)values-zh-rHK
    英文(新加坡)values-en-rNZ
    英文(南非)values-en-rZA
    阿拉伯文(埃及)values-ar-rEG
    阿拉伯文(以色列)values-ar-rIL
    保加利亚文values-bg-rBG

    等等

    解决Android 7.0 App 内切换语言不生效的问题

    Android 7.0及以前版本,Configuration 中的语言相当于是App的全局设置:

    public static void changeAppLanguage(Context context, String newLanguage){
        Resources resources = context.getResources();
        Configuration configuration = resources.getConfiguration();
    
        // app locale
        Locale locale = getLocaleByLanguage(newLanguage);
    
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            configuration.setLocale(locale);
        } else {
            configuration.locale = locale;
        }
    
        // updateConfiguration
        DisplayMetrics dm = resources.getDisplayMetrics();
        resources.updateConfiguration(configuration, dm);
    }
    

    然后在继承application的类中调用即可:

    public class App extends Application {
    
        @Override
        public void onCreate() {
            super.onCreate();
            onLanguageChange();
        }
    
        /**
         * Handling Configuration Changes
         * @param newConfig newConfig
         */
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            onLanguageChange();
        }
    
        private void onLanguageChange() {
            String language;//读取App配置
            AppLanguageUtils.changeAppLanguage(this, language);
        }
    }
    

    Android7.0及之后版本,使用了LocaleList,Configuration中的语言设置可能获取的不同,而是生效于各自的Context。

    这会导致:Android7.0使用的方式,有些Activity可能会显示为手机的系统语言。

    Android7.0 优化了对多语言的支持,废弃了updateConfiguration()方法,替代方法:createConfigurationContext(), 而返回的是Context。

    也就是语言需要植入到Context中,每个Context都植入一遍。

    我自己的使用方式如下:

    1.创建工具类
    public class AppLanguageUtils {
    
        public static HashMap<String, Locale> mAllLanguages = new HashMap<String, Locale>(8) {{
            put(Constants.ENGLISH, Locale.ENGLISH);
            put(Constants.CHINESE, Locale.SIMPLIFIED_CHINESE);
            put(Constants.SIMPLIFIED_CHINESE, Locale.SIMPLIFIED_CHINESE);
            put(Constants.TRADITIONAL_CHINESE, Locale.TRADITIONAL_CHINESE);
            put(Constants.FRANCE, Locale.FRANCE);
            put(Constants.GERMAN, Locale.GERMANY);
            put(Constants.HINDI, new Locale(Constants.HINDI, "IN"));
            put(Constants.ITALIAN, Locale.ITALY);
        }};
    
        @SuppressWarnings("deprecation")
        public static void changeAppLanguage(Context context, String newLanguage) {
            Resources resources = context.getResources();
            Configuration configuration = resources.getConfiguration();
    
            // app locale
            Locale locale = getLocaleByLanguage(newLanguage);
    
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                configuration.setLocale(locale);
            } else {
                configuration.locale = locale;
            }
    
            // updateConfiguration
            DisplayMetrics dm = resources.getDisplayMetrics();
            resources.updateConfiguration(configuration, dm);
        }
    
    
        private static boolean isSupportLanguage(String language) {
            return mAllLanguages.containsKey(language);
        }
    
        public static String getSupportLanguage(String language) {
            if (isSupportLanguage(language)) {
                return language;
            }
    
            if (null == language) {//为空则表示首次安装或未选择过语言,获取系统默认语言
                Locale locale = Locale.getDefault();
                for (String key : mAllLanguages.keySet()) {
                    if (TextUtils.equals(mAllLanguages.get(key).getLanguage(), locale.getLanguage())) {
                        return locale.getLanguage();
                    }
                }
            }
            return Constants.ENGLISH;
        }
    
        /**
         * 获取指定语言的locale信息,如果指定语言不存在{@link #mAllLanguages},返回本机语言,如果本机语言不是语言集合中的一种{@link #mAllLanguages},返回英语
         *
         * @param language language
         * @return
         */
        public static Locale getLocaleByLanguage(String language) {
            if (isSupportLanguage(language)) {
                return mAllLanguages.get(language);
            } else {
                Locale locale = Locale.getDefault();
                for (String key : mAllLanguages.keySet()) {
                    if (TextUtils.equals(mAllLanguages.get(key).getLanguage(), locale.getLanguage())) {
                        return locale;
                    }
                }
            }
            return Locale.ENGLISH;
        }
    
    
        public static Context attachBaseContext(Context context, String language) {
            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 = AppLanguageUtils.getLocaleByLanguage(language);
    
               Configuration configuration = resources.getConfiguration();
               configuration.setLocale(locale);
               configuration.setLocales(new LocaleList(locale));
               return context.createConfigurationContext(configuration);
           }
    
    }
    
    2.在继承application的类中重写attachBaseContext()方法等操作
    private static Context sContext;
        private String language;
    
        @Override
        protected void attachBaseContext(Context base) {
    super.attachBaseContext(AppLanguageUtils.attachBaseContext(base, getAppLanguage(base)));
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            sContext = this;
            spu = new SharedPreferencesUtil(getApplicationContext());
            language = spu.getString("language");
            onLanguageChange();
        }
    
        public static Context getContext() {
            return sContext;
        }
    
        /**
         * Handling Configuration Changes
         * @param newConfig newConfig
         */
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            onLanguageChange();
        }
    
        private void onLanguageChange() {
     //       AppLanguageUtils.changeAppLanguage(this, AppLanguageUtils.getSupportLanguage(getAppLanguage(this)));
            AppLanguageUtils.changeAppLanguage(this, AppLanguageUtils.getSupportLanguage(language));
        }
    
        private String getAppLanguage(Context context) {
            String appLang = PreferenceManager.getDefaultSharedPreferences(context)
                    .getString("language", Constants.ENGLISH);
            return appLang ;
        }
    
    3.在需要切换语言的SetLanguageActivity中设置切换方法
    private void onChangeAppLanguage(String newLanguage) {
            spu.putString("language", newLanguage);
            AppLanguageUtils.changeAppLanguage(this, newLanguage);
            AppLanguageUtils.changeAppLanguage(App.getContext(), newLanguage);
            this.recreate();
        }
    
    4.跳转到 SetLanguageActivity 的原界面语言需要刷新
    //携参跳转
    startActivityForResult(new Intent(OriginActivity.this, SetLanguageActivity.class), CHANGE_LANGUAGE_REQUEST_CODE);
    
    //切换后返回刷新
    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
             if (requestCode == CHANGE_LANGUAGE_REQUEST_CODE) {
                recreate();
            }
        }
    

    参考:解决Android 7.0 App内切换语言不生效的问题

       Android多语言切换(兼容安卓9、10)

       若想实现:切完语言立即刷新然后还是停留当前页

    展开全文
  • Android多语言切换

    万次阅读 2018-02-22 16:22:39
    values-语言代号-地区代号 分别表示不同地区语言资源,常用的国际化资源如下: 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values-zh-rHK 英语(美国):values-en-rUS 英语...

    先看下demo中点击对应要显示语言的按钮,效果图如下:
    demo效果图


    先贴上项目目录图:
    项目目录
    values-语言代号-地区代号 分别表示不同地区语言资源,常用的国际化资源如下:

    中文(中国):values-zh-rCN
    中文(台湾):values-zh-rTW
    中文(香港):values-zh-rHK
    英语(美国):values-en-rUS
    英语(英国):values-en-rGB
    英文(澳大利亚):values-en-rAU
    英文(加拿大):values-en-rCA
    英文(爱尔兰):values-en-rIE
    英文(印度):values-en-rIN
    英文(新西兰):values-en-rNZ
    英文(新加坡):values-en-rSG
    英文(南非):values-en-rZA
    阿拉伯文(埃及):values-ar-rEG
    阿拉伯文(以色列):values-ar-rIL
    保加利亚文:  values-bg-rBG
    加泰罗尼亚文:values-ca-rES
    捷克文:values-cs-rCZ
    丹麦文:values-da-rDK
    德文(奥地利):values-de-rAT
    德文(瑞士):values-de-rCH
    德文(德国):values-de-rDE
    德文(列支敦士登):values-de-rLI
    希腊文:values-el-rGR
    西班牙文(西班牙):values-es-rES
    西班牙文(美国):values-es-rUS
    芬兰文(芬兰):values-fi-rFI
    法文(比利时):values-fr-rBE
    法文(加拿大):values-fr-rCA
    法文(瑞士):values-fr-rCH
    法文(法国):values-fr-rFR
    希伯来文:values-iw-rIL
    印地文:values-hi-rIN
    克罗里亚文:values-hr-rHR
    匈牙利文:values-hu-rHU
    印度尼西亚文:values-in-rID
    意大利文(瑞士):values-it-rCH
    意大利文(意大利):values-it-rIT
    日文:values-ja-rJP
    韩文:values-ko-rKR
    立陶宛文:valueslt-rLT
    拉脱维亚文:values-lv-rLV
    挪威博克马尔文:values-nb-rNO
    荷兰文(比利时):values-nl-BE
    荷兰文(荷兰):values-nl-rNL
    波兰文:values-pl-rPL
    葡萄牙文(巴西):values-pt-rBR
    葡萄牙文(葡萄牙):values-pt-rPT
    罗马尼亚文:values-ro-rRO
    俄文:values-ru-rRU
    斯洛伐克文:values-sk-rSK
    斯洛文尼亚文:values-sl-rSI
    塞尔维亚文:values-sr-rRS
    瑞典文:values-sv-rSE
    泰文:values-th-rTH
    塔加洛语:values-tl-rPH
    土耳其文:values–r-rTR
    乌克兰文:values-uk-rUA
    越南文:values-vi-rVN
    

    这里要注意的一点是,创建的不同语言文件中对应的name是一致的,这样在要显示的地方引用这个相同的name才可以实现多语言切换。
    示例图

    MainActivity中代码
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            findViewById(R.id.simple_zh_btn).setOnClickListener(this);
            findViewById(R.id.tw_zh_btn).setOnClickListener(this);
            findViewById(R.id.us_btn).setOnClickListener(this);
            findViewById(R.id.jp_btn).setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.simple_zh_btn:
                    changeAppLanguage(Locale.SIMPLIFIED_CHINESE);
                    break;
                case R.id.tw_zh_btn:
                    changeAppLanguage(Locale.TRADITIONAL_CHINESE);
                    break;
                case R.id.us_btn:
                    changeAppLanguage(Locale.US);
                    break;
                case R.id.jp_btn:
                    changeAppLanguage(Locale.JAPAN);
                    break;
                default:
                    break;
            }
        }
    
        /**
         * 更改应用语言
         *
         * @param locale
         */
        public void changeAppLanguage(Locale locale) {
            DisplayMetrics metrics = getResources().getDisplayMetrics();
            Configuration configuration = getResources().getConfiguration();
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                configuration.setLocale(locale);
            } else {
                configuration.locale = locale;
            }
            getResources().updateConfiguration(configuration, metrics);
            //重新启动Activity
            Intent intent = new Intent(this, MainActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
        }
    }
    
    布局文件
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_margin="10dp"
            android:background="#88000000"
            android:padding="1dp">
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#ffffff"
                android:text="@string/text"
                android:textSize="20sp" />
        </LinearLayout>
    
        <Button
            android:id="@+id/simple_zh_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="简体中文" />
    
        <Button
            android:id="@+id/tw_zh_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="繁体中文" />
    
        <Button
            android:id="@+id/us_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="英文" />
    
        <Button
            android:id="@+id/jp_btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="日文" />
    </LinearLayout>
    
    

    注意

    在切换语言显示后,杀死App,再重新进入App会显示默认环境中的语种,和之前设置的不一致,解决办法:在设置语种的时候保存设置语种,继承Application类,在onCreate中设置应用语言环境为上次保存的语种即可。

    Android多语言切换实现总结:

    1、创建需要的语言资源文件夹,创建对应的strings.xml文件。
    2、翻译不同语言name中对应的内容。
    3、调用getResources().updateConfiguration(configuration, metrics);更改应用语言环境。
    4、重新启动Activity。
    5、如需下次启动App时显示上次切换的语言,需要保存设置,并在自已的Application类中onCreate方法中更改应用语言环境即可。

    展开全文
  • Android多语言切换(国际化)代码实现十分简单,下载可以直接运行
  • demo下载:android多语言切换 - 下载频道 - CSDN.NET http://download.csdn.net/detail/baidu_31093133/9775830核心代码://获取资源 Resources resources = getResources(); //获取配置 Configuration ...

    效果图:
    android 多语言切换

    demo下载:

    android多语言切换 - 下载频道 - CSDN.NET
    http://download.csdn.net/detail/baidu_31093133/9775830

    核心代码:

    //获取资源
     Resources resources = getResources();
    //获取配置
            Configuration configuration = resources.getConfiguration();
            //获取屏幕
            DisplayMetrics dm = resources.getDisplayMetrics();
            switch (language) {
                case "zh":
                //设置语言
                    configuration.locale = Locale.SIMPLIFIED_CHINESE;
                    break;
                case "en":
                    configuration.locale = Locale.ENGLISH;
                    break;
                default:
                    configuration.locale = Locale.ENGLISH;
                    break;
            }
            //更新语言
            resources.updateConfiguration(configuration, dm);

    如何让配置立即生效呢?

    我们在设置页面修改了默认的语言配置之后,销毁所有的activity并重启MainActivity,他就会重新加载资源文件。语言修改就生效了。

    问题:销毁所有的Activity
    自定义一个Application类,初始化一个list,将每一个activity都加入到这个list,销毁所有activity就遍历这个List,逐一调用finish方法即可。

    建立一个BaseActivity,所有的Activity都继承自BaseActivity,在onCreate方法里把activity加入lIst,在onDestroy方法里移除activity
    在onResume方法里,判断当前保存的语言是中文还是英文,如果是英文就加载英文资源,中文就加载中文资源。

    以下是代码:

    App.java

    public class App extends Application {
        private static Context mContext;
        private static App sInstance;
        public static int SCREEN_WIDTH;
    
    
        //用List来保存每一个activity
        private List<Activity> mActivities = new LinkedList<Activity>();
    
        @Override
        public void onCreate() {
            super.onCreate();
            init();
        }
    
    
        private void init() {
            mContext = getApplicationContext();
            sInstance = this;
            ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
            Point screen = new Point();
            SCREEN_WIDTH = Math.min(screen.x, screen.y);
        }
    
        public static Context getContext() {
            if (mContext == null) {
                throw new NullPointerException("App Context is Null");
            }
            return mContext;
        }
    
        public static App getInstance() {
            if (sInstance == null) {
                throw new NullPointerException("App sInstance is Null");
            }
            return sInstance;
        }
    
        /**
         * 获得当前进程的名字
         *
         * @param context
         * @return
         */
        public static String getCurProcessName(Context context) {
    
            int pid = android.os.Process.myPid();
    
            ActivityManager activityManager = (ActivityManager) context
                    .getSystemService(Context.ACTIVITY_SERVICE);
    
            for (ActivityManager.RunningAppProcessInfo appProcess : activityManager
                    .getRunningAppProcesses()) {
    
                if (appProcess.pid == pid) {
    
                    return appProcess.processName;
                }
            }
            return null;
        }
    
        //关闭所有Activity
        public void addActivity(Activity activity) {
            mActivities.add(activity);
        }
    
        //移除Activity
        public void removeActivity(Activity activity) {
            mActivities.remove(activity);
        }
    
        public void exit() {
            try {
                for (Activity ac :
                        mActivities) {
                    if (ac != null) {
                        ac.finish();
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @Override
        public void onLowMemory() {
            super.onLowMemory();
            System.gc();
        }
    
    }
    

    BaseActivity.java

    public abstract class BaseActivity extends AppCompatActivity {
    
        //防止重复点击
        private long lastClickTime;
    
        private Context ctx;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ctx = this;
            App.getInstance().addActivity(this);
            initContentView();
            initViews();
        }
    
        @Override
        public void setContentView(@LayoutRes int layoutResID) {
            super.setContentView(layoutResID);
            ButterKnife.bind(this);
        }
    
        @Override
        public void setContentView(View view) {
            super.setContentView(view);
            ButterKnife.bind(this);
        }
    
        @Override
        public void setContentView(View view, ViewGroup.LayoutParams params) {
            super.setContentView(view, params);
            ButterKnife.bind(this);
        }
    
        /**
         * 初始化布局
         */
        protected abstract void initContentView();
    
        /**
         * 初始化View
         */
        protected abstract void initViews();
    
    
        private boolean isFastDoubleClick() {
            long time = System.currentTimeMillis();
            long timeD = time - lastClickTime;
            if (0 < timeD && timeD < 500) {
    //            LogUtil.i("main fast click");
                return true;
            }
            lastClickTime = time;
            return false;
        }
    
        @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
            if (ev.getAction() == MotionEvent.ACTION_DOWN) {
                if (isFastDoubleClick()) {
                    return true;
                }
            }
            return super.dispatchTouchEvent(ev);
        }
    
        public Context getCtx() {
            return ctx;
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            String language = (String) SPUtil.get(ctx, "language", "");
            Locale locale = Locale.getDefault();
            String defaultLanguage = locale.getLanguage();
            if (!language.equals(defaultLanguage)) {
                showLanguage(language);
            }
        }
    
        private void showLanguage(String language) {
            Log.i("LHD", "选择的语言: " + language);
            Resources resources = getResources();
            Configuration configuration = resources.getConfiguration();
            DisplayMetrics dm = resources.getDisplayMetrics();
            switch (language) {
                case "zh":
                    configuration.locale = Locale.SIMPLIFIED_CHINESE;
                    break;
                case "en":
                    configuration.locale = Locale.ENGLISH;
                    break;
                default:
                    configuration.locale = Locale.ENGLISH;
                    break;
            }
            resources.updateConfiguration(configuration, dm);
            SPUtil.put(getCtx(), "language", language);
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            App.getInstance().removeActivity(this);
        }
    }
    

    其它代码请参考demo(^__^)

    展开全文
  • Android 多语言切换demo

    2016-03-31 17:58:15
    http://blog.csdn.net/cuihaoren01/article/details/51027018的资源
  • android多语言切换失效

    千次阅读 2018-06-26 17:46:01
    最近一个项目中用到了多语言,可是在有些语言切换失效,挣扎许久终于找到问题了。这是切换语言的代码:public void changeAppLanguage(String key) { Configuration configurat = getResources().getConfiguration...

    最近一个项目中用到了多语言,可是在有些语言切换失效,挣扎许久终于找到问题了。

    这是切换语言的代码:

    public void changeAppLanguage(String key) {
            Configuration configurat = getResources().getConfiguration();
            if (getString(R.string.simplified_Chinese).equals(key)){
                configurat.locale = Locale.SIMPLIFIED_CHINESE;
            }else if (getString(R.string.traditional_Chinese).equals(key)){
                configurat.locale = Locale.TRADITIONAL_CHINESE;
            }else if (getString(R.string.English).equals(key)){
                configurat.locale = Locale.ENGLISH;
            } else {
                Configuration config = getResources().getConfiguration();//获取系统的配置
                getResources().updateConfiguration(config, getResources().getDisplayMetrics());//跟随系统语言
                return;
            }
            DisplayMetrics metrics = getResources().getDisplayMetrics();
            getResources().updateConfiguration(configurat, metrics);
        }
    文件夹的范围必须大于等于代码中的Locale的范围,解释看下方示例:

    例如:字体为英文

    1、文件夹为value-en,代码为Locale.ENGLISH或Locale.US(美国),Locale.CANADA(澳大利亚)……

    2、文件夹为value-en-rUS,那么代码只能为Locale.US

    如果文件夹的范文小于代码中的Locale的范围,那么程序调用的是默认value文件夹下的strings.xml。问题来了,如果删掉默认的strings.xml,那么调用的是哪个文件呢?答案是No,默认文件删掉程序会崩掉。


    还有一个小小问题:


    右边如果需要选择Any Region之外的语言,选中后直接Enter或者不要碰到图中区域然后点击OK,如果碰到图中区域,选择会跳转到Any Region。

    展开全文
  • Android 多语言切换简单实例分享】

    千次阅读 2015-07-28 00:00:36
    一.Android多语言切换Android应用的开发不可能只针对某一个国家或者区域使用,各国间语言文化各不相同,因此一个优秀的APP必须支持多种语言,为了实现这个特性,Android给出了一个解决方式,在res目录下通过values+...
  • Android多语言切换(兼容安卓9、10)

    千次阅读 2020-05-19 16:40:26
    为了实现这个特性,Android给出了一个解决方案,在res文件夹下通过values+语言编码来实现多国语言的支持(中间採用连字符号-连接)比如:values-es代表英文,在网上看过不少关于多语言切换的文章,但都没有达到自己...
  • 下面主要讲的是如何针对于8.0版本以上的系统做适配,因为8.0对多语言的改动还是蛮大的。 一.8.0之前如何写多语言 Resources resources = context.getApplicationContext().getResources(); DisplayMetrics dm =...
  • 最近公司项目也开始做国际版本,正好我来负责适配,刚开始以为就是简单的新增几套词条资源,更改一下app的语言环境, 然而测试的时候发现,问题太了,,,,, 百度 Google搜了很,借鉴了很适配的方案,目前...
  • DEMO地址:https://github.com/zhaopingfu/LanguageTypefaceAndroid中多语言切换在线简体中文转为繁体中文:http://www.vifo.com.cn/fanti/使用 第一步:准备资源文件将要显示的资源文件放在对应文件夹的strings.xml中 ...
  • 应用里面难免会用到多语言切换的功能,下面就说说步骤: 1,把你原本的string.xml里面的string翻译成英语,新建一个文件夹values-en 放在资源文件夹res下面,原本中文也要像这样建一个文件夹values-ch;其他的语言...
  • android app多语言切换

    2019-09-30 17:21:52
    Android 多语言切换,适配8.0以上版本,单击按钮可以实时进行语言切换,也可以设置手机系统的语言,重启app进行切换。
  • Android APP多语言切换

    热门讨论 2014-04-29 15:07:46
    Android 应用程序多语言切换的一个Demo,有需要的请下载
  • android APP 多语言切换

    2017-12-06 10:37:34
    android 多语言环境 代码简单明了,逻辑清晰! 完整代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,730
精华内容 16,292
关键字:

android多语言切换