Skip to content

Commit

Permalink
语言切换
Browse files Browse the repository at this point in the history
  • Loading branch information
gwang74 committed Dec 26, 2018
1 parent cfe1aaa commit 4d2877b
Show file tree
Hide file tree
Showing 22 changed files with 570 additions and 23 deletions.
24 changes: 14 additions & 10 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ android {
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
Expand All @@ -21,15 +22,18 @@ android {


dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:support-v4:26.1.0'
implementation 'com.android.support:support-vector-drawable:26.1.0'
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.mcxiaoke.volley:library:1.0.+'
compile files('libs/gson-2.3.1.jar')
compile 'com.android.support:design:26.1.0'
compile 'com.google.zxing:core:3.3.0'
}
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
implementation 'com.mcxiaoke.volley:library:1.0.+'
implementation files('libs/gson-2.3.1.jar')
implementation 'com.android.support:design:26.1.0'
implementation 'com.google.zxing:core:3.3.0'
implementation 'org.greenrobot:eventbus:3.0.0'
}
10 changes: 10 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -146,3 +146,13 @@
public static *** i(...);
public static *** w(...);
}

-keepclassmembers class ** {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
7 changes: 5 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
<application
android:name=".TApplication"
android:allowBackup="true"
android:configChanges="locale|layoutDirection|keyboardHidden|keyboard|screenSize"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
Expand Down Expand Up @@ -74,8 +75,7 @@
android:screenOrientation="portrait" />
<activity
android:name=".activity.ModifyWalletActivity"
android:screenOrientation="portrait"
/>
android:screenOrientation="portrait" />
<activity
android:name=".activity.ChangeWalletActivity"
android:screenOrientation="portrait" />
Expand Down Expand Up @@ -106,6 +106,9 @@
<activity
android:name=".activity.ChooseTokenTransferActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.LanguageActivity"
android:screenOrientation="portrait" />
</application>

</manifest>
16 changes: 15 additions & 1 deletion app/src/main/java/com/tokenbank/TApplication.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package com.tokenbank;

import android.app.Application;
import android.content.Context;
import android.os.Build;

import com.tokenbank.activity.BaseActivity;
import com.tokenbank.base.BlockChainData;
import com.tokenbank.base.JSUtil;
import com.tokenbank.base.WalletInfoManager;
import com.tokenbank.base.TBController;
import com.tokenbank.config.AppConfig;
import com.tokenbank.utils.LanguageUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;


public class TApplication extends Application {
Expand All @@ -37,7 +41,7 @@ public void addActivity(BaseActivity activity) {

public void popActivity(BaseActivity activity) {
mActivities.remove(activity);
if(!activity.isFinishing()) {
if (!activity.isFinishing()) {
activity.finish();
}
}
Expand All @@ -50,4 +54,14 @@ public void clearActivity() {
}
}
}

@Override
protected void attachBaseContext(Context base) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Locale locale = LanguageUtil.getUserLocale(base);
super.attachBaseContext(LanguageUtil.updateLocale(base, locale));
} else {
super.attachBaseContext(base);
}
}
}
36 changes: 34 additions & 2 deletions app/src/main/java/com/tokenbank/activity/BaseActivity.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
package com.tokenbank.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.tokenbank.TApplication;
import com.tokenbank.utils.LanguageUtil;
import com.tokenbank.utils.PermissionUtil;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

import java.util.Locale;


public class BaseActivity extends AppCompatActivity {

Expand All @@ -20,14 +29,37 @@ public void onRequestPermissionsResult(int requestCode, String[] permissions, in
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TApplication application = (TApplication)getApplication();
TApplication application = (TApplication) getApplication();
application.addActivity(this);
EventBus.getDefault().register(this);
}

@Override
protected void onDestroy() {
super.onDestroy();
TApplication application = (TApplication)getApplication();
TApplication application = (TApplication) getApplication();
application.popActivity(this);
EventBus.getDefault().unregister(this);
}

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}

@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(String str) {
switch (str) {
case "EVENT_REFRESH_LANGUAGE":
Locale locale = LanguageUtil.getUserLocale(this);
LanguageUtil.updateLocale(this, locale);
// recreate();//刷新界面
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
overridePendingTransition(0, 0);
break;
}
}

}
111 changes: 111 additions & 0 deletions app/src/main/java/com/tokenbank/activity/LanguageActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package com.tokenbank.activity;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;

import com.tokenbank.R;
import com.tokenbank.utils.LanguageUtil;
import com.tokenbank.view.TitleBar;

import java.util.Locale;

public class LanguageActivity extends BaseActivity implements View.OnClickListener, TitleBar.TitleBarClickListener {

private TitleBar mTitleBar;

private RelativeLayout mLayoutAuto;
private RelativeLayout mLayoutLanguageZh;
private RelativeLayout mLayoutLanguageEn;
private ImageView mImageAuto;
private ImageView mImageChinese;
private ImageView mImageEnglish;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_language);

mTitleBar = (TitleBar) findViewById(R.id.title_bar);
mTitleBar.setTitle(getString(R.string.title_languages));
mTitleBar.setLeftDrawable(R.drawable.ic_back);
mTitleBar.setRightTextColor(R.color.white);
mTitleBar.setTitleBarClickListener(this);

mLayoutAuto = (RelativeLayout) findViewById(R.id.layout_auto);
mLayoutAuto.setOnClickListener(this);
mImageAuto = (ImageView) mLayoutAuto.findViewById(R.id.img_auto);
mLayoutLanguageZh = (RelativeLayout) findViewById(R.id.layout_chinese);
mImageChinese = (ImageView) mLayoutLanguageZh.findViewById(R.id.img_chinese);
mLayoutLanguageZh.setOnClickListener(this);
mLayoutLanguageEn = (RelativeLayout) findViewById(R.id.layout_english);
mImageEnglish = (ImageView) mLayoutLanguageEn.findViewById(R.id.img_english);
mLayoutLanguageEn.setOnClickListener(this);

String select = LanguageUtil.getUserSelect(this);
imageShow(select);

}

@Override
public void onClick(View view) {
if (view == mLayoutLanguageZh) {
LanguageUtil.saveUserSelect(this, Locale.CHINESE.getLanguage());
imageShow(Locale.CHINESE.getLanguage());
LanguageUtil.saveUserLocale(this, Locale.CHINESE);
} else if (view == mLayoutLanguageEn) {
LanguageUtil.saveUserSelect(this, Locale.ENGLISH.getLanguage());
imageShow(Locale.ENGLISH.getLanguage());
LanguageUtil.saveUserLocale(this, Locale.ENGLISH);
} else {
LanguageUtil.saveUserSelect(this, "auto");
imageShow("auto");
LanguageUtil.saveUserLocale(this, Locale.getDefault());
}
}

@Override
public void onLeftClick(View v) {
finish();
}


@Override
public void onRightClick(View v) {

}

@Override
public void onMiddleClick(View v) {

}

public static void startLanguageActivity(Context from) {
Intent intent = new Intent(from, LanguageActivity.class);
intent.addFlags(from instanceof BaseActivity ? 0 : Intent.FLAG_ACTIVITY_NEW_TASK);
from.startActivity(intent);
}

private void imageShow(String select) {
switch (select) {
case "zh":
mImageAuto.setVisibility(View.GONE);
mImageChinese.setVisibility(View.VISIBLE);
mImageEnglish.setVisibility(View.GONE);
break;
case "en":
mImageAuto.setVisibility(View.GONE);
mImageChinese.setVisibility(View.GONE);
mImageEnglish.setVisibility(View.VISIBLE);
break;
case "auto":
mImageAuto.setVisibility(View.VISIBLE);
mImageChinese.setVisibility(View.GONE);
mImageEnglish.setVisibility(View.GONE);
break;
}
}
}
28 changes: 25 additions & 3 deletions app/src/main/java/com/tokenbank/activity/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
Expand All @@ -18,8 +20,11 @@
import com.tokenbank.base.WalletInfoManager;
import com.tokenbank.fragment.MainUserFragment;
import com.tokenbank.fragment.MainWalletFragment;
import com.tokenbank.utils.LanguageUtil;
import com.tokenbank.utils.ViewUtil;

import java.util.Locale;


public class MainActivity extends BaseActivity implements View.OnClickListener {

Expand Down Expand Up @@ -57,8 +62,7 @@ protected void onResume() {
public void onClick(View view) {
if (view == mLayoutTabWallet) {
mMainViewPager.setCurrentItem(WALLET_INDEX);
}
else if (view == mLayoutTabMine) {
} else if (view == mLayoutTabMine) {
mMainViewPager.setCurrentItem(MINE_INDEX);
}
}
Expand Down Expand Up @@ -155,4 +159,22 @@ public int getCount() {
}
}


@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Locale userLocale = LanguageUtil.getUserLocale(this);
//系统语言改变了应用保持之前设置的语言
if (userLocale != null) {
Locale.setDefault(userLocale);
Configuration configuration = new Configuration(newConfig);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
configuration.setLocale(userLocale);
} else {
configuration.locale = userLocale;
}
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
}
}

}
Loading

0 comments on commit 4d2877b

Please sign in to comment.