Android 仿支付宝设置app语言

第一次登录,进入app语言选择界面,默认选择系统默认语言,自己可以选择其他语言,保存设置,下次进入直接应用保存设置的语言。(这里只用了英文和中文)

直接贴代码:

public class LanguageChoiceActivity extends Activity {

    public static final String LANGUAGE = "language";

    private CheckBox cb_ok;

    private RadioButton rb_english, rb_chinese;

    private String language;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

         /* 隐藏标题栏 */
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        /* 隐藏状态栏 */
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        /* 设定屏幕显示为横屏 */
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        setContentView(R.layout.activity_language_choice);

        //初始化控件
        setViews();

        //设置监听事件
        setListeners();

        //初始化 language 的值
        setLanguage();

    }

    /**
     * 初始化 language 的值
     */
    private void setLanguage() {
        SharedPreferences share = getSharedPreferences(LANGUAGE, MODE_PRIVATE);
        String lan = share.getString(LANGUAGE, null);
        if (lan != null) {
            language = lan;
            switchLanguage(language);
            Intent intent = new Intent(LanguageChoiceActivity.this, LoginActivity.class);
            startActivity(intent);
            finish();
        } else {
            //获取默认语言,判断是否选中按钮
            String aDefault = Locale.getDefault().toString();
            String adefault2 = aDefault.substring(0, 2);
            String english = Locale.ENGLISH.toString();
            if (english.equals(adefault2)) {
                language = "en";
                rb_english.setChecked(true);
            } else {
                language = "zh";
                rb_chinese.setChecked(true);
            }
        }


    }


    /**
     * 初始化控件
     */
    private void setViews() {
        cb_ok = (CheckBox) findViewById(R.id.cb_ok);
        rb_english = (RadioButton) findViewById(R.id.rb_english);
        rb_chinese = (RadioButton) findViewById(R.id.rb_chinese);
    }

    /**
     * 设置监听事件
     */
    private void setListeners() {
        cb_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switchLanguage(language);
                saveLanguage();
                Intent intent = new Intent(LanguageChoiceActivity.this, LoginActivity.class);
                startActivity(intent);
                finish();
            }
        });

        rb_english.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                language = "en";
            }
        });
        rb_chinese.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                language = "ch";
            }
        });

    }

    /**
     * 保存语言设置到
     */
    private void saveLanguage() {
        SharedPreferences share = getSharedPreferences(LANGUAGE, MODE_PRIVATE);
        SharedPreferences.Editor editor = share.edit();
        editor.putString(LANGUAGE, language);
        editor.apply();
    }

    /**
     * 改变系统语言
     * 默认为中文
     *
     * @param language
     */
    private void switchLanguage(String language) {
        //设置应用语言类型
        Resources resources = getResources();
        Configuration configuration = resources.getConfiguration();
        DisplayMetrics dm = resources.getDisplayMetrics();
        if (language.equals("en")) {
            configuration.locale = Locale.ENGLISH;
        } else {
            configuration.locale = Locale.SIMPLIFIED_CHINESE;
        }
        resources.updateConfiguration(configuration, dm);
    }

}

若想要重新设置语言,就在跳转过来的时候清除设置:

tv_back_language.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences sharedPreferences=getSharedPreferences(LanguageChoiceActivity.LANGUAGE,MODE_PRIVATE);
                SharedPreferences.Editor editor=sharedPreferences.edit();
                editor.putString(LanguageChoiceActivity.LANGUAGE,null);
                editor.apply();
                Intent intent=new Intent(LoginActivity.this,LanguageChoiceActivity.class);
                startActivity(intent);
                finish();
            }
        });
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值