首先看目录:

上代码:

package com.loaderman.language;

import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.DisplayMetrics; import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode; import java.util.Locale; public class BaseActivity extends AppCompatActivity { @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 = Store.getLanguageLocal(this);
if(sta != null && !"".equals(sta)){
// 本地语言设置
Locale myLocale = new Locale(sta);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
} } @Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}
package com.loaderman.language;

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager; public class Store { 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;
}
}
import android.content.Intent;
import android.os.Bundle;
import android.view.View; public class MainActivity extends BaseActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("第一个Activity");
findViewById(R.id.btn_setting).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, SettingActivity.class));
}
});
}
}
package com.loaderman.language;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.widget.Button; import org.greenrobot.eventbus.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_ja), getString(R.string.lan_de)};
final String[] locals = {"zh_CN", "en", "ja", "de"};
Button 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)
{
Store.setLanguageLocal(SettingActivity.this, locals[which]);
EventBus.getDefault().post("EVENT_REFRESH_LANGUAGE");
}
});
builder.show();
}
});
}
}

效果图:

最新文章

  1. 【原】移动web页面给用户发送邮件的方法 (邮件含文本、图片、链接)
  2. CCS应用中常见的一些小技巧
  3. SQL笔记-第三章,数据的增删改
  4. html5的程序接口与元素变化
  5. Nginx NLB 及Redis学习
  6. 一点一点学ASP.NET系列
  7. 抽象工厂模式firstones
  8. Redis系列二(yum切换为网易163)
  9. GitLab的安装及使用教程
  10. etcd_selector.go
  11. Lamda Expression
  12. sql select中加入常量列
  13. 使用nginx搭建rtmp服务器
  14. 迭代器模块 itertools
  15. ORB-SLAM2(4) 离线双目数据测试
  16. 让browserify接收命令行参数,在打包时parse yml配置文件
  17. html总结(一)
  18. linux 查看硬件信息
  19. High Performance MySQL笔记:count
  20. Python爬虫入门四之Urllib库的高级用法

热门文章

  1. Java【tomcat】配置文件
  2. Spring Boot起步依赖:定制starter
  3. NodeJS 开发博客(四) 日志及安全攻击
  4. Ubuntu增加swap交换空间的步骤
  5. python 操作 MySQL 即相关问题
  6. LeetCode 246. Strobogrammatic Number
  7. js的基础
  8. ES WIndows 安装 ES与ES-head
  9. a problem
  10. 用python实现不同格式99乘法表输出