Skip to content

Commit a495e5b

Browse files
committed
语言切换
1 parent af166c7 commit a495e5b

File tree

4 files changed

+47
-33
lines changed

4 files changed

+47
-33
lines changed

app/src/main/java/com/tokenbank/activity/BaseActivity.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package com.tokenbank.activity;
22

33
import android.content.Intent;
4+
import android.content.res.Configuration;
5+
import android.os.Build;
46
import android.os.Bundle;
57
import android.support.annotation.Nullable;
68
import android.support.v7.app.AppCompatActivity;
7-
import android.util.Log;
89

910
import com.tokenbank.TApplication;
1011
import com.tokenbank.utils.LanguageUtil;
@@ -47,6 +48,24 @@ public void onSaveInstanceState(Bundle outState) {
4748
super.onSaveInstanceState(outState);
4849
}
4950

51+
@Override
52+
public void onConfigurationChanged(Configuration newConfig) {
53+
super.onConfigurationChanged(newConfig);
54+
Locale userLocale = LanguageUtil.getUserLocale(this);
55+
//系统语言改变了应用保持之前设置的语言
56+
if (userLocale != null) {
57+
Locale.setDefault(userLocale);
58+
Configuration configuration = new Configuration(newConfig);
59+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
60+
configuration.setLocale(userLocale);
61+
createConfigurationContext(configuration);
62+
} else {
63+
configuration.locale = userLocale;
64+
}
65+
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
66+
}
67+
}
68+
5069
@Subscribe(threadMode = ThreadMode.MAIN)
5170
public void onEvent(String str) {
5271
switch (str) {

app/src/main/java/com/tokenbank/activity/LanguageActivity.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import android.content.Context;
44
import android.content.Intent;
5+
import android.content.res.Configuration;
6+
import android.content.res.Resources;
7+
import android.os.Build;
58
import android.os.Bundle;
69
import android.view.View;
710
import android.widget.ImageView;
@@ -63,7 +66,14 @@ public void onClick(View view) {
6366
} else {
6467
LanguageUtil.saveUserSelect(this, "auto");
6568
imageShow("auto");
66-
LanguageUtil.saveUserLocale(this, Locale.getDefault());
69+
Locale locale;
70+
Configuration configuration = Resources.getSystem().getConfiguration();
71+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
72+
locale = configuration.getLocales().get(0);
73+
} else {
74+
locale = configuration.locale;
75+
}
76+
LanguageUtil.saveUserLocale(this, locale);
6777
}
6878
}
6979

app/src/main/java/com/tokenbank/activity/MainActivity.java

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22

33
import android.content.Context;
44
import android.content.Intent;
5-
import android.content.res.Configuration;
6-
import android.os.Build;
75
import android.os.Bundle;
86
import android.support.annotation.Nullable;
97
import android.support.v4.app.Fragment;
108
import android.support.v4.app.FragmentManager;
119
import android.support.v4.app.FragmentPagerAdapter;
1210
import android.support.v4.view.ViewPager;
13-
import android.util.Log;
1411
import android.view.View;
1512
import android.widget.ImageView;
1613
import android.widget.LinearLayout;
@@ -20,11 +17,8 @@
2017
import com.tokenbank.base.WalletInfoManager;
2118
import com.tokenbank.fragment.MainUserFragment;
2219
import com.tokenbank.fragment.MainWalletFragment;
23-
import com.tokenbank.utils.LanguageUtil;
2420
import com.tokenbank.utils.ViewUtil;
2521

26-
import java.util.Locale;
27-
2822

2923
public class MainActivity extends BaseActivity implements View.OnClickListener {
3024

@@ -158,23 +152,4 @@ public int getCount() {
158152
return mFragments.length;
159153
}
160154
}
161-
162-
163-
@Override
164-
public void onConfigurationChanged(Configuration newConfig) {
165-
super.onConfigurationChanged(newConfig);
166-
Locale userLocale = LanguageUtil.getUserLocale(this);
167-
//系统语言改变了应用保持之前设置的语言
168-
if (userLocale != null) {
169-
Locale.setDefault(userLocale);
170-
Configuration configuration = new Configuration(newConfig);
171-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
172-
configuration.setLocale(userLocale);
173-
} else {
174-
configuration.locale = userLocale;
175-
}
176-
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
177-
}
178-
}
179-
180155
}

app/src/main/java/com/tokenbank/utils/LanguageUtil.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import android.content.Context;
44
import android.content.SharedPreferences;
55
import android.content.res.Configuration;
6+
import android.content.res.Resources;
67
import android.os.Build;
78
import android.os.LocaleList;
9+
import android.text.TextUtils;
810
import android.util.DisplayMetrics;
911

1012
import org.greenrobot.eventbus.EventBus;
@@ -33,6 +35,17 @@ public class LanguageUtil {
3335
public static Locale getUserLocale(Context pContext) {
3436
String fileName = pContext.getPackageName() + "_" + "LANGUAGE";
3537
SharedPreferences preferences = pContext.getSharedPreferences(fileName, Context.MODE_PRIVATE);
38+
String select = preferences.getString(SELECT, "auto");
39+
if (TextUtils.equals(select, "auto")) {
40+
Locale locale;
41+
Configuration configuration = Resources.getSystem().getConfiguration();
42+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
43+
locale = configuration.getLocales().get(0);
44+
} else {
45+
locale = configuration.locale;
46+
}
47+
return locale;
48+
}
3649
String localeLan = preferences.getString(LANGUAGE, Locale.getDefault().getLanguage());
3750
return new Locale(localeLan);
3851
}
@@ -106,17 +119,14 @@ public static void saveUserSelect(Context pContext, String pSelect) {
106119
public static Context updateLocale(Context pContext, Locale pNewUserLocale) {
107120
Context updateContext;
108121
Configuration configuration = pContext.getResources().getConfiguration();
109-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
122+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
110123
configuration.setLocale(pNewUserLocale);
111-
DisplayMetrics displayMetrics = pContext.getResources().getDisplayMetrics();
112-
pContext.getResources().updateConfiguration(configuration, displayMetrics);
113124
updateContext = pContext.createConfigurationContext(configuration);
114125
} else {
115126
configuration.locale = pNewUserLocale;
116127
updateContext = pContext;
117-
DisplayMetrics displayMetrics = pContext.getResources().getDisplayMetrics();
118-
pContext.getResources().updateConfiguration(configuration, displayMetrics);
119128
}
129+
pContext.getResources().updateConfiguration(configuration, pContext.getResources().getDisplayMetrics());
120130
return updateContext;
121131
}
122132

@@ -129,6 +139,6 @@ public static Context updateLocale(Context pContext, Locale pNewUserLocale) {
129139
*    
130140
*/
131141
public static boolean needUpdateLocale(Context pContext, Locale pNewUserLocale) {
132-
return pNewUserLocale != null && !getCurrentLocale(pContext).equals(pNewUserLocale);
142+
return pNewUserLocale != null && !TextUtils.equals(getCurrentLocale(pContext).getLanguage(), pNewUserLocale.getLanguage());
133143
}
134144
}

0 commit comments

Comments
 (0)