zoukankan      html  css  js  c++  java
  • android 多语言(在APP里面内切换语言)

    创建SharedPreferences的管理类

    public class PreferenceUtil {
    
        private static SharedPreferences mSharedPreferences = null;
        private static Editor mEditor = null;
        
        public static void init(Context context){
            if (null == mSharedPreferences) {
                mSharedPreferences = android.preference.PreferenceManager.getDefaultSharedPreferences(context) ;
            }
        }
        
        public static void removeKey(String key){
            mEditor = mSharedPreferences.edit();
            mEditor.remove(key);
            mEditor.commit();
        }
        
        public static void removeAll(){
            mEditor = mSharedPreferences.edit();
            mEditor.clear();
            mEditor.commit();
        }
    
        public static void commitString(String key, String value){
            mEditor = mSharedPreferences.edit();
            mEditor.putString(key, value);
            mEditor.commit();
        }
        
        public static String getString(String key, String faillValue){
            return mSharedPreferences.getString(key, faillValue);
        }
        
        public static void commitInt(String key, int value){
            mEditor = mSharedPreferences.edit();
            mEditor.putInt(key, value);
            mEditor.commit();
        }
        
        public static int getInt(String key, int failValue){
            return mSharedPreferences.getInt(key, failValue);
        }
        
        public static void commitLong(String key, long value){
            mEditor = mSharedPreferences.edit();
            mEditor.putLong(key, value);
            mEditor.commit();
        }
        
        public static long getLong(String key, long failValue) {
            return mSharedPreferences.getLong(key, failValue);
        }
        
        public static void commitBoolean(String key, boolean value){
            mEditor = mSharedPreferences.edit();
            mEditor.putBoolean(key, value);
            mEditor.commit();
        }
        
        public static Boolean getBoolean(String key, boolean failValue){
            return mSharedPreferences.getBoolean(key, failValue);
        }
    }

    创建BaseActivity类

    public class BaseActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //初始化PreferenceUtil
            PreferenceUtil.init(this);
            //根据上次的语言设置,重新设置语言
            switchLanguage(PreferenceUtil.getString("language", "zh"));
        }
        
        
        protected void switchLanguage(String language) {
            //设置应用语言类型
            Resources resources = getResources();
            Configuration config = resources.getConfiguration();
            DisplayMetrics dm = resources.getDisplayMetrics();
           if (language.equals("en")) {
                config.locale = Locale.ENGLISH;
            } else {
                 config.locale = Locale.SIMPLIFIED_CHINESE;
            }
            resources.updateConfiguration(config, dm);
            
            //保存设置语言的类型
            PreferenceUtil.commitString("language", language);
        }
    }

    MainActivity

    public class MainActivity extends BaseActivity implements OnClickListener{
    
        private Dialog mDialog;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            DisplayMetrics dm=new DisplayMetrics();
    
            getWindowManager().getDefaultDisplay().getMetrics(dm);
    
            String str="mobile分辨率为:"+dm.widthPixels+"X"+dm.heightPixels;
    
            Log.i("L",str);
    
            TextView textView = (TextView) findViewById(R.id.text);
            Button button = (Button) findViewById(R.id.btn);
            Button button2 = (Button) findViewById(R.id.btn_2);
            textView.setText(R.string.hello_world);
            button.setText(R.string.switch_language);
            
            button.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    if (mDialog == null) {
                        LayoutInflater inflater = getLayoutInflater();
                        View layout = inflater.inflate(R.layout.dialog_select_lanuage,null);
                        TextView english = (TextView) layout.findViewById(R.id.select_english);
                        TextView chinese = (TextView) layout.findViewById(R.id.select_chinese);
                        mDialog = new Dialog(MainActivity.this, R.style.Custom_Dialog_Theme);
                        mDialog.setCanceledOnTouchOutside(false);
                        english.setOnClickListener(MainActivity.this);
                        chinese.setOnClickListener(MainActivity.this);
                        mDialog.setContentView(layout);
                    }
                    mDialog.show();
                }
            });
            
            button2.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    Intent it = new Intent(MainActivity.this, SecondActivity.class);
                    startActivity(it);
                }
            });
        }
    
        @Override
        public void onClick(View v) {
            mDialog.dismiss();    
            switch (v.getId()) {
                case R.id.select_english:
                    switchLanguage("en");
                    break;
                case R.id.select_chinese:
                    switchLanguage("zh");
                    break;
        
                default:
                    break;
            }
            //更新语言后,destroy当前页面,重新绘制
            finish();
            Intent it = new Intent(MainActivity.this, MainActivity.class);
            startActivity(it);
        }
    
    }

      

  • 相关阅读:
    trackr: An AngularJS app with a Java 8 backend – Part III
    trackr: An AngularJS app with a Java 8 backend – Part II
    21. Wireless tools (无线工具 5个)
    20. Web proxies (网页代理 4个)
    19. Rootkit detectors (隐形工具包检测器 5个)
    18. Fuzzers (模糊测试器 4个)
    16. Antimalware (反病毒 3个)
    17. Debuggers (调试器 5个)
    15. Password auditing (密码审核 12个)
    14. Encryption tools (加密工具 8个)
  • 原文地址:https://www.cnblogs.com/stuart/p/4522066.html
Copyright © 2011-2022 走看看