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(); + } }