From c9c1b1e7c102bd1f16998797c7cf9cedcba4d024 Mon Sep 17 00:00:00 2001
From: tcqq <1982191323@qq.com>
Date: Fri, 6 Apr 2018 21:56:32 +0800
Subject: [PATCH 1/4] 1. Change gradle version to 4.6. 2. Change support
library version to 27. 3. Delete BlankDummyActivity and Layout and Anim. 4.
Delete LocalizationDelegate.java. 5. Merge #10 requests. 6. Fix deprecated
method.
---
app/build.gradle | 2 +-
.../localizationapp/MainActivity.java | 17 ++++-----
build.gradle | 2 +-
gradle.properties | 6 ++--
gradle/wrapper/gradle-wrapper.properties | 2 +-
localizationActivity/build.gradle | 2 +-
.../src/main/AndroidManifest.xml | 9 +----
.../core/LocalizationActivityDelegate.java | 22 +++++-------
.../core/LocalizationDelegate.java | 19 ----------
.../ui/BlankDummyActivity.java | 35 -------------------
...on_localization_activity_transition_in.xml | 4 ---
...n_localization_activity_transition_out.xml | 4 ---
.../main/res/layout/activity_blank_dummy.xml | 9 -----
13 files changed, 25 insertions(+), 108 deletions(-)
delete mode 100644 localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationDelegate.java
delete mode 100644 localizationActivity/src/main/java/com/akexorcist/localizationactivity/ui/BlankDummyActivity.java
delete mode 100644 localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml
delete mode 100644 localizationActivity/src/main/res/anim/animation_localization_activity_transition_out.xml
delete mode 100644 localizationActivity/src/main/res/layout/activity_blank_dummy.xml
diff --git a/app/build.gradle b/app/build.gradle
index 6492fb6..e602b2f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,7 +2,6 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion Integer.parseInt(project.ANDROID_COMPILE_SDK_VERSION)
- buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
applicationId "com.akexorcist.localizationapp"
@@ -22,6 +21,7 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
+ buildToolsVersion = '27.0.3'
}
dependencies {
diff --git a/app/src/main/java/com/akexorcist/localizationapp/MainActivity.java b/app/src/main/java/com/akexorcist/localizationapp/MainActivity.java
index 332958e..560383e 100644
--- a/app/src/main/java/com/akexorcist/localizationapp/MainActivity.java
+++ b/app/src/main/java/com/akexorcist/localizationapp/MainActivity.java
@@ -5,6 +5,7 @@
import android.view.View;
import com.akexorcist.localizationactivity.ui.LocalizationActivity;
+import com.akexorcist.localizationapp.customactivity.CustomActivity;
import com.akexorcist.localizationapp.customactivity.SimpleCustomActivity;
import com.akexorcist.localizationapp.nestedfragment.NestedFragmentActivity;
import com.akexorcist.localizationapp.simpleactivity.SimpleActivity;
@@ -12,7 +13,7 @@
import com.akexorcist.localizationapp.stackedactivity.Stack1Activity;
import com.akexorcist.localizationapp.viewpager.ViewPagerActivity;
-public class MainActivity extends LocalizationActivity {
+public class MainActivity extends CustomActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -30,30 +31,30 @@ public void onCreate(Bundle savedInstanceState) {
}
public View.OnClickListener onSimpleActivityClick() {
- return view -> goToActivity(SimpleActivity.class);
+ return view -> openActivity(SimpleActivity.class);
}
public View.OnClickListener onCustomActivityClick() {
- return view -> goToActivity(SimpleCustomActivity.class);
+ return view -> openActivity(SimpleCustomActivity.class);
}
public View.OnClickListener onStackedActivityClick() {
- return view -> goToActivity(Stack1Activity.class);
+ return view -> openActivity(Stack1Activity.class);
}
public View.OnClickListener onSimpleFragmentClick() {
- return view -> goToActivity(SimpleFragmentActivity.class);
+ return view -> openActivity(SimpleFragmentActivity.class);
}
private View.OnClickListener onNestedFragmentClick() {
- return view -> goToActivity(NestedFragmentActivity.class);
+ return view -> openActivity(NestedFragmentActivity.class);
}
public View.OnClickListener onViewPagerClick() {
- return view -> goToActivity(ViewPagerActivity.class);
+ return view -> openActivity(ViewPagerActivity.class);
}
- public void goToActivity(Class> activity) {
+ public void openActivity(Class> activity) {
Intent intent = new Intent(this, activity);
startActivity(intent);
}
diff --git a/build.gradle b/build.gradle
index 6b3d755..f1b02c8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ buildscript {
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.0.0'
+ classpath 'com.android.tools.build:gradle:3.2.0-alpha08'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/gradle.properties b/gradle.properties
index a7e38a3..9b0aaca 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -32,7 +32,7 @@ POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=Akexorcist
POM_DEVELOPER_NAME=Somkiat Khitwongwattana
-ANDROID_BUILD_TOOLS_VERSION=26.0.2
-ANDROID_COMPILE_SDK_VERSION=26
-ANDROID_TARGET_SDK_VERSION=26
+ANDROID_BUILD_TOOLS_VERSION=27.0.3
+ANDROID_COMPILE_SDK_VERSION=27
+ANDROID_TARGET_SDK_VERSION=27
ANDROID_MIN_SDK=17
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index b6f3b4c..94dc111 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
diff --git a/localizationActivity/build.gradle b/localizationActivity/build.gradle
index 7bd5aa0..9b45810 100644
--- a/localizationActivity/build.gradle
+++ b/localizationActivity/build.gradle
@@ -2,7 +2,6 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion Integer.parseInt(project.ANDROID_COMPILE_SDK_VERSION)
- buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion Integer.parseInt(project.ANDROID_MIN_SDK)
@@ -18,6 +17,7 @@ android {
res.srcDirs = ['src/main/res']
}
}
+ buildToolsVersion = '27.0.3'
}
dependencies {
diff --git a/localizationActivity/src/main/AndroidManifest.xml b/localizationActivity/src/main/AndroidManifest.xml
index d3e55e8..6ad9b37 100644
--- a/localizationActivity/src/main/AndroidManifest.xml
+++ b/localizationActivity/src/main/AndroidManifest.xml
@@ -1,12 +1,5 @@
-
-
-
-
-
diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
index 44cf0d3..651ee1a 100644
--- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
+++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
@@ -2,7 +2,6 @@
import android.app.Activity;
import android.content.Context;
-import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
@@ -11,8 +10,6 @@
import android.os.LocaleList;
import android.util.DisplayMetrics;
-import com.akexorcist.localizationactivity.ui.BlankDummyActivity;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -85,7 +82,8 @@ public Context getApplicationContext(Context applicationContext) {
public Resources getResources(Resources resources) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
Configuration config = resources.getConfiguration();
- config.locale = LanguageSetting.getLanguage(activity);
+ Locale locale = LanguageSetting.getLanguage(activity);
+ config.setLocale(locale);
DisplayMetrics metrics = resources.getDisplayMetrics();
return new Resources(activity.getAssets(), metrics, config);
} else {
@@ -156,12 +154,14 @@ private void setupLocale(Locale locale) {
private void updateLocaleConfiguration(Context context, Locale locale) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
- Configuration config = context.getResources().getConfiguration();
+ Configuration config = context.getResources().getConfiguration();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+ config.setLocale(locale);
+ } else {
config.locale = locale;
- DisplayMetrics dm = context.getResources().getDisplayMetrics();
- context.getResources().updateConfiguration(config, dm);
}
+ DisplayMetrics dm = context.getResources().getDisplayMetrics();
+ context.getResources().updateConfiguration(config, dm);
}
// Avoid duplicated setup
@@ -173,7 +173,6 @@ private boolean isCurrentLanguageSetting(Context context, Locale locale) {
private void notifyLanguageChanged() {
sendOnBeforeLocaleChangedEvent();
activity.getIntent().putExtra(KEY_ACTIVITY_LOCALE_CHANGED, true);
- callDummyActivity();
activity.recreate();
}
@@ -182,7 +181,6 @@ private void checkLocaleChange(Context context) {
if (!isCurrentLanguageSetting(context, currentLanguage)) {
sendOnBeforeLocaleChangedEvent();
isLocalizationChanged = true;
- callDummyActivity();
activity.recreate();
}
}
@@ -206,8 +204,4 @@ private void sendOnAfterLocaleChangedEvent() {
listener.onAfterLocaleChanged();
}
}
-
- private void callDummyActivity() {
- activity.startActivity(new Intent(activity, BlankDummyActivity.class));
- }
}
diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationDelegate.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationDelegate.java
deleted file mode 100644
index 570fb31..0000000
--- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationDelegate.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.akexorcist.localizationactivity.core;
-
-import android.app.Activity;
-
-/**
- * Created by Aleksander Mielczarek on 03.04.2016.
- */
-
-
-/**
- * Use LocalizationActivityDelegate
- */
-
-@Deprecated
-public class LocalizationDelegate extends LocalizationActivityDelegate {
- public LocalizationDelegate(Activity activity) {
- super(activity);
- }
-}
diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/ui/BlankDummyActivity.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/ui/BlankDummyActivity.java
deleted file mode 100644
index 0bb127a..0000000
--- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/ui/BlankDummyActivity.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.akexorcist.localizationactivity.ui;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.os.Handler;
-
-import com.akexorcist.localizationactivity.R;
-
-public class BlankDummyActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- overridePendingTransition(R.anim.animation_localization_activity_transition_in,
- R.anim.animation_localization_activity_transition_out);
- setContentView(R.layout.activity_blank_dummy);
-
- delayedFinish();
- }
-
- @Override
- public void finish() {
- super.finish();
- overridePendingTransition(R.anim.animation_localization_activity_transition_in,
- R.anim.animation_localization_activity_transition_out);
- }
-
- private void delayedFinish() {
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- finish();
- }
- }, 200);
- }
-}
diff --git a/localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml b/localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml
deleted file mode 100644
index c2a4f6e..0000000
--- a/localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
\ No newline at end of file
diff --git a/localizationActivity/src/main/res/anim/animation_localization_activity_transition_out.xml b/localizationActivity/src/main/res/anim/animation_localization_activity_transition_out.xml
deleted file mode 100644
index b8283a7..0000000
--- a/localizationActivity/src/main/res/anim/animation_localization_activity_transition_out.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
\ No newline at end of file
diff --git a/localizationActivity/src/main/res/layout/activity_blank_dummy.xml b/localizationActivity/src/main/res/layout/activity_blank_dummy.xml
deleted file mode 100644
index 3125c84..0000000
--- a/localizationActivity/src/main/res/layout/activity_blank_dummy.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
From 4fddc97242cf887884b61a8fd1be6a8a04c2f00b Mon Sep 17 00:00:00 2001
From: tcqq <1982191323@qq.com>
Date: Fri, 6 Apr 2018 22:08:40 +0800
Subject: [PATCH 2/4] 1. Fix deprecated method.
---
.../core/LocalizationActivityDelegate.java | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
index 651ee1a..123c9e5 100644
--- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
+++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
@@ -80,15 +80,11 @@ public Context getApplicationContext(Context applicationContext) {
}
public Resources getResources(Resources resources) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
- Configuration config = resources.getConfiguration();
- Locale locale = LanguageSetting.getLanguage(activity);
- config.setLocale(locale);
- DisplayMetrics metrics = resources.getDisplayMetrics();
- return new Resources(activity.getAssets(), metrics, config);
- } else {
- return resources;
- }
+ Configuration config = resources.getConfiguration();
+ Locale locale = LanguageSetting.getLanguage(activity);
+ config.setLocale(locale);
+ DisplayMetrics metrics = resources.getDisplayMetrics();
+ return new Resources(activity.getAssets(), metrics, config);
}
// Provide method to set application language by country name.
From c997c597174088a67ad512539c3f296735b44ca7 Mon Sep 17 00:00:00 2001
From: tcqq <1982191323@qq.com>
Date: Fri, 6 Apr 2018 23:38:44 +0800
Subject: [PATCH 3/4] 1. Fix #24 issues.
---
.../core/LocalizationActivityDelegate.java | 30 +++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
index 123c9e5..ce83b3c 100644
--- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
+++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
@@ -2,12 +2,15 @@
import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.LocaleList;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.app.ActivityOptionsCompat;
import android.util.DisplayMetrics;
import java.util.ArrayList;
@@ -169,7 +172,7 @@ private boolean isCurrentLanguageSetting(Context context, Locale locale) {
private void notifyLanguageChanged() {
sendOnBeforeLocaleChangedEvent();
activity.getIntent().putExtra(KEY_ACTIVITY_LOCALE_CHANGED, true);
- activity.recreate();
+ recreateActivity(activity);
}
// Check if locale has change while this activity was run to back stack.
@@ -177,7 +180,7 @@ private void checkLocaleChange(Context context) {
if (!isCurrentLanguageSetting(context, currentLanguage)) {
sendOnBeforeLocaleChangedEvent();
isLocalizationChanged = true;
- activity.recreate();
+ recreateActivity(activity);
}
}
@@ -200,4 +203,27 @@ private void sendOnAfterLocaleChangedEvent() {
listener.onAfterLocaleChanged();
}
}
+
+ /**
+ * Recreate activity. Note: use "activity.recreate()" to recreate activity,
+ * if language is RTL, will does not automatically change the layout direction.
+ *
+ * @param activity
+ */
+ public static void recreateActivity(Activity activity) {
+ Intent restartIntent = new Intent(activity, activity.getClass());
+
+ Bundle extras = activity.getIntent().getExtras();
+ if (extras != null) {
+ restartIntent.putExtras(extras);
+ }
+ ActivityCompat.startActivity(
+ activity,
+ restartIntent,
+ ActivityOptionsCompat
+ .makeCustomAnimation(activity, android.R.anim.fade_in, android.R.anim.fade_out)
+ .toBundle()
+ );
+ activity.finish();
+ }
}
From 3b89374b2738672452ee74efa82d7508e87f05a0 Mon Sep 17 00:00:00 2001
From: tcqq <1982191323@qq.com>
Date: Sat, 7 Apr 2018 15:23:05 +0800
Subject: [PATCH 4/4] 1. Support enable or disabled Anim when recreate Activity
---
.../core/LocalizationActivityDelegate.java | 35 +++++++++++--------
1 file changed, 21 insertions(+), 14 deletions(-)
diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
index ce83b3c..2d095fd 100644
--- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
+++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/core/LocalizationActivityDelegate.java
@@ -172,7 +172,7 @@ private boolean isCurrentLanguageSetting(Context context, Locale locale) {
private void notifyLanguageChanged() {
sendOnBeforeLocaleChangedEvent();
activity.getIntent().putExtra(KEY_ACTIVITY_LOCALE_CHANGED, true);
- recreateActivity(activity);
+ recreate(activity, true);
}
// Check if locale has change while this activity was run to back stack.
@@ -180,7 +180,7 @@ private void checkLocaleChange(Context context) {
if (!isCurrentLanguageSetting(context, currentLanguage)) {
sendOnBeforeLocaleChangedEvent();
isLocalizationChanged = true;
- recreateActivity(activity);
+ recreate(activity, true);
}
}
@@ -205,25 +205,32 @@ private void sendOnAfterLocaleChangedEvent() {
}
/**
- * Recreate activity. Note: use "activity.recreate()" to recreate activity,
- * if language is RTL, will does not automatically change the layout direction.
- *
- * @param activity
+ * Helper method to recreate the Activity. This method should be called after a Locale change.
+ * @param activity the Activity that will be recreated
+ * @param animate a flag indicating if the recreation will be animated or not
*/
- public static void recreateActivity(Activity activity) {
+ public static void recreate(Activity activity, boolean animate) {
Intent restartIntent = new Intent(activity, activity.getClass());
Bundle extras = activity.getIntent().getExtras();
if (extras != null) {
restartIntent.putExtras(extras);
}
- ActivityCompat.startActivity(
- activity,
- restartIntent,
- ActivityOptionsCompat
- .makeCustomAnimation(activity, android.R.anim.fade_in, android.R.anim.fade_out)
- .toBundle()
- );
+
+ if (animate) {
+ ActivityCompat.startActivity(
+ activity,
+ restartIntent,
+ ActivityOptionsCompat
+ .makeCustomAnimation(activity, android.R.anim.fade_in, android.R.anim.fade_out)
+ .toBundle()
+ );
+ } else {
+ activity.startActivity(restartIntent);
+ activity.overridePendingTransition(0, 0);
+ }
+
activity.finish();
+
}
}