From 6fa082c08ec431c8aa6488d916e9d2f87a8dd2e4 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 16 Sep 2015 16:38:35 +0700 Subject: [PATCH 001/247] Change protected to public --- .../simplefragment/SimpleFragmentActivity.java | 4 ++-- .../localizationapp/viewpager/ViewPagerActivity.java | 4 ++-- .../localizationactivity/LanguageSetting.java | 10 +++++----- .../localizationactivity/LocalizationActivity.java | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/akexorcist/localizationapp/simplefragment/SimpleFragmentActivity.java b/app/src/main/java/com/akexorcist/localizationapp/simplefragment/SimpleFragmentActivity.java index 4ca66f4..c3e59ca 100644 --- a/app/src/main/java/com/akexorcist/localizationapp/simplefragment/SimpleFragmentActivity.java +++ b/app/src/main/java/com/akexorcist/localizationapp/simplefragment/SimpleFragmentActivity.java @@ -38,14 +38,14 @@ public void onCreate(Bundle savedInstanceState) { } @Override - protected void onSaveInstanceState(Bundle outState) { + public void onSaveInstanceState(Bundle outState) { // Save x-position of horizontal scroll view. outState.putInt(KEY_SCROLL_X, svLanguageChooser.getScrollX()); super.onSaveInstanceState(outState); } @Override - protected void onRestoreInstanceState(Bundle savedInstanceState) { + public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); // Restore x-position of horizontal scroll view. svLanguageChooser.scrollTo(savedInstanceState.getInt(KEY_SCROLL_X), 0); diff --git a/app/src/main/java/com/akexorcist/localizationapp/viewpager/ViewPagerActivity.java b/app/src/main/java/com/akexorcist/localizationapp/viewpager/ViewPagerActivity.java index bbb950c..5bfe176 100644 --- a/app/src/main/java/com/akexorcist/localizationapp/viewpager/ViewPagerActivity.java +++ b/app/src/main/java/com/akexorcist/localizationapp/viewpager/ViewPagerActivity.java @@ -44,14 +44,14 @@ public void onCreate(Bundle savedInstanceState) { } @Override - protected void onSaveInstanceState(Bundle outState) { + public void onSaveInstanceState(Bundle outState) { // Save current item of view pager. outState.putInt(KEY_CURRENT_PAGE, vpGreeting.getCurrentItem()); super.onSaveInstanceState(outState); } @Override - protected void onRestoreInstanceState(Bundle savedInstanceState) { + public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); // Restore current item of view pager. vpGreeting.setCurrentItem(savedInstanceState.getInt(KEY_CURRENT_PAGE)); diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java index 95008b9..aebc035 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java @@ -37,15 +37,15 @@ public class LanguageSetting { private static String DEFAULT_LANGUAGE = Locale.ENGLISH.getLanguage(); private static String currentLanguage = Locale.ENGLISH.getLanguage(); - protected static void setDefaultLanguage(String language) { + public static void setDefaultLanguage(String language) { DEFAULT_LANGUAGE = language; } - protected static String getDefaultLanguage() { + public static String getDefaultLanguage() { return DEFAULT_LANGUAGE; } - protected static void setLanguage(Context context, String language) { + public static void setLanguage(Context context, String language) { currentLanguage = language; SharedPreferences.Editor editor = getLanguagePreference(context).edit(); editor.putString(KEY_LANGUAGE, language); @@ -76,11 +76,11 @@ public static Locale getLocale() { return getLocale(getLanguage()); } - private static Locale getLocale(Context context) { + public static Locale getLocale(Context context) { return getLocale(getLanguage(context)); } - protected static Locale getLocale(String language) { + public static Locale getLocale(String language) { return new Locale(language.toLowerCase(Locale.getDefault())); } diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java index 6ff7fbd..dbaeaba 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java @@ -45,7 +45,7 @@ public class LocalizationActivity extends AppCompatActivity implements OnLocaleC private String currentLanguage = LanguageSetting.getDefaultLanguage(); @Override - protected void onCreate(Bundle savedInstanceState) { + public void onCreate(Bundle savedInstanceState) { setupLanguage(); checkBeforeLocaleChanging(); super.onCreate(savedInstanceState); @@ -127,7 +127,7 @@ private void notifyLanguageChanged() { // If activity is run to backstack. So we have to check if this activity is resume working. @Override - protected void onResume() { + public void onResume() { super.onResume(); new Handler().post(new Runnable() { @Override From fd2bc6d043a1edb1925880602dcc8442d4ac1edd Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Fri, 16 Oct 2015 13:02:43 +0700 Subject: [PATCH 002/247] Add blank dummy activity --- .../src/main/AndroidManifest.xml | 13 +++++++- .../BlankDummyActivity.java | 30 +++++++++++++++++++ ...on_localization_activity_transition_in.xml | 4 +++ ...n_localization_activity_transition_out.xml | 4 +++ .../main/res/layout/activity_blank_dummy.xml | 9 ++++++ 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 localizationActivity/src/main/java/com/akexorcist/localizationactivity/BlankDummyActivity.java create mode 100644 localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml create mode 100644 localizationActivity/src/main/res/anim/animation_localization_activity_transition_out.xml create mode 100644 localizationActivity/src/main/res/layout/activity_blank_dummy.xml diff --git a/localizationActivity/src/main/AndroidManifest.xml b/localizationActivity/src/main/AndroidManifest.xml index 002215e..2d76cb7 100644 --- a/localizationActivity/src/main/AndroidManifest.xml +++ b/localizationActivity/src/main/AndroidManifest.xml @@ -1 +1,12 @@ - + + + + + + + + diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/BlankDummyActivity.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/BlankDummyActivity.java new file mode 100644 index 0000000..6decbf0 --- /dev/null +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/BlankDummyActivity.java @@ -0,0 +1,30 @@ +package com.akexorcist.localizationactivity; + +import android.app.Activity; +import android.os.Bundle; +import android.os.Handler; + +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); + + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + finish(); + } + }, 200); + } + + @Override + public void finish() { + super.finish(); + overridePendingTransition(R.anim.animation_localization_activity_transition_in, + R.anim.animation_localization_activity_transition_out); + } +} 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 new file mode 100644 index 0000000..c2a4f6e --- /dev/null +++ b/localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml @@ -0,0 +1,4 @@ + + \ 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 new file mode 100644 index 0000000..b8283a7 --- /dev/null +++ b/localizationActivity/src/main/res/anim/animation_localization_activity_transition_out.xml @@ -0,0 +1,4 @@ + + \ 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 new file mode 100644 index 0000000..25ca817 --- /dev/null +++ b/localizationActivity/src/main/res/layout/activity_blank_dummy.xml @@ -0,0 +1,9 @@ + + + + From bbda3e7b92f284090af1a9e79c91223aea8c0ca9 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Fri, 16 Oct 2015 13:03:02 +0700 Subject: [PATCH 003/247] Call blank dummy change language change --- .../akexorcist/localizationactivity/LocalizationActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java index dbaeaba..230f018 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java @@ -23,6 +23,7 @@ package com.akexorcist.localizationactivity; import android.content.Context; +import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.os.Handler; @@ -122,6 +123,7 @@ private boolean isDuplicatedLanguageSetting(String language) { private void notifyLanguageChanged() { onBeforeLocaleChanged(); getIntent().putExtra(KEY_ACTIVIY_LOCALE_CHANGED, true); + startActivity(new Intent(this, BlankDummyActivity.class)); recreate(); } From ebd0a8671ba2dbdb7e2d7b6da5db6abf96565374 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Fri, 16 Oct 2015 13:03:24 +0700 Subject: [PATCH 004/247] update latest dependencies version update to 1.0.9 --- app/build.gradle | 4 ++-- gradle.properties | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6dcea3f..7128751 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,7 +22,7 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:22.2.1' - compile 'com.android.support:design:22.2.1' + compile 'com.android.support:appcompat-v7:23.0.1' + compile 'com.android.support:design:23.0.1' compile project(':localizationActivity') } diff --git a/gradle.properties b/gradle.properties index aaaec2c..9a65b74 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,8 +17,8 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=1.0.8 -VERSION_CODE=010008 +VERSION_NAME=1.0.9 +VERSION_CODE=010009 GROUP=com.akexorcist POM_DESCRIPTION=Language changeable activity library @@ -32,7 +32,7 @@ POM_LICENCE_DIST=repo POM_DEVELOPER_ID=Akexorcist POM_DEVELOPER_NAME=Somkiat Khitwongwattana -ANDROID_BUILD_TOOLS_VERSION=22.0.1 -ANDROID_COMPILE_SDK_VERSION=22 -ANDROID_TARGET_SDK_VERSION=22 +ANDROID_BUILD_TOOLS_VERSION=23.0.1 +ANDROID_COMPILE_SDK_VERSION=23 +ANDROID_TARGET_SDK_VERSION=23 ANDROID_MIN_SDK=11 \ No newline at end of file From fb6dff5e0237d93516d59bf5cb8354777d61f49c Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Sat, 17 Oct 2015 23:52:54 +0700 Subject: [PATCH 005/247] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 23a8950..bf41cb2 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Maven Gradle ``` -compile 'com.akexorcist:localizationactivity:1.0.8' +compile 'com.akexorcist:localizationactivity:1.0.9' ``` Feature From 9ea5d930db505c0002694c5f8c5b0c4da46f0911 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 28 Oct 2015 12:34:45 +0700 Subject: [PATCH 006/247] Add dummy activity when press back after langauge changed --- .../localizationactivity/LocalizationActivity.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java index 230f018..05a4317 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java @@ -123,7 +123,7 @@ private boolean isDuplicatedLanguageSetting(String language) { private void notifyLanguageChanged() { onBeforeLocaleChanged(); getIntent().putExtra(KEY_ACTIVIY_LOCALE_CHANGED, true); - startActivity(new Intent(this, BlankDummyActivity.class)); + callDummyActivity(); recreate(); } @@ -144,6 +144,7 @@ public void run() { private void checkLocaleChange() { if(!LanguageSetting.getLanguage().toLowerCase(Locale.getDefault()) .equals(currentLanguage.toLowerCase(Locale.getDefault()))) { + callDummyActivity(); recreate(); } } @@ -156,6 +157,10 @@ private void checkAfterLocaleChanging() { } } + private void callDummyActivity() { + startActivity(new Intent(this, BlankDummyActivity.class)); + } + // Just override method locale change event @Override public void onBeforeLocaleChanged() { } From 7518a4a3b8ddc0440d421e08e26b308867c86e83 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 28 Oct 2015 12:35:57 +0700 Subject: [PATCH 007/247] Update to 1.0.10 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9a65b74..c6a0680 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,8 +17,8 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=1.0.9 -VERSION_CODE=010009 +VERSION_NAME=1.0.10 +VERSION_CODE=010010 GROUP=com.akexorcist POM_DESCRIPTION=Language changeable activity library From bc7bff64460c161b0d12bcc522a58e7819f45353 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 28 Oct 2015 18:06:05 +0700 Subject: [PATCH 008/247] Update android support library --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7128751..2feceb6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,7 +22,7 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.0.1' - compile 'com.android.support:design:23.0.1' + compile 'com.android.support:appcompat-v7:23.1.0' + compile 'com.android.support:design:23.1.0' compile project(':localizationActivity') } From 6293013dc692dcf41333db414cd7aaf6f07aad2e Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 28 Oct 2015 18:06:22 +0700 Subject: [PATCH 009/247] Change duration --- .../res/anim/animation_localization_activity_transition_in.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index c2a4f6e..a7e9af0 100644 --- a/localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml +++ b/localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml @@ -1,4 +1,4 @@ \ No newline at end of file + android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="200" /> \ No newline at end of file From 1fae055fde2f011253ea96140fef9d34ad666f82 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 28 Oct 2015 18:06:59 +0700 Subject: [PATCH 010/247] Fix duration --- .../res/anim/animation_localization_activity_transition_in.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index a7e9af0..c2a4f6e 100644 --- a/localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml +++ b/localizationActivity/src/main/res/anim/animation_localization_activity_transition_in.xml @@ -1,4 +1,4 @@ \ No newline at end of file + android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="50" /> \ No newline at end of file From 404f800af8a9b098211f9a1d22c5816a66d7e77d Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 28 Oct 2015 18:07:25 +0700 Subject: [PATCH 011/247] CHange getLanguage method --- .../BlankDummyActivity.java | 18 +++++++++++------- .../localizationactivity/LanguageSetting.java | 12 +----------- .../LocalizationActivity.java | 13 ++++++++----- 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/BlankDummyActivity.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/BlankDummyActivity.java index 6decbf0..d3cbbfa 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/BlankDummyActivity.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/BlankDummyActivity.java @@ -1,11 +1,11 @@ package com.akexorcist.localizationactivity; import android.app.Activity; +import android.os.Build; import android.os.Bundle; import android.os.Handler; public class BlankDummyActivity extends Activity { - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -13,12 +13,7 @@ protected void onCreate(Bundle savedInstanceState) { R.anim.animation_localization_activity_transition_out); setContentView(R.layout.activity_blank_dummy); - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - finish(); - } - }, 200); + dalayedFinish(); } @Override @@ -27,4 +22,13 @@ public void finish() { overridePendingTransition(R.anim.animation_localization_activity_transition_in, R.anim.animation_localization_activity_transition_out); } + + private void dalayedFinish() { + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + finish(); + } + }, 200); + } } diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java index aebc035..1e4aac0 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java @@ -35,7 +35,6 @@ public class LanguageSetting { private static final String PREFERENCE_LANGUAGE = "pref_language"; private static final String KEY_LANGUAGE = "key_language"; private static String DEFAULT_LANGUAGE = Locale.ENGLISH.getLanguage(); - private static String currentLanguage = Locale.ENGLISH.getLanguage(); public static void setDefaultLanguage(String language) { DEFAULT_LANGUAGE = language; @@ -46,7 +45,6 @@ public static String getDefaultLanguage() { } public static void setLanguage(Context context, String language) { - currentLanguage = language; SharedPreferences.Editor editor = getLanguagePreference(context).edit(); editor.putString(KEY_LANGUAGE, language); editor.apply(); @@ -56,11 +54,7 @@ public static void setLanguage(Context context, Locale locale) { setLanguage(context, locale.getLanguage()); } - public static String getLanguage() { - return currentLanguage; - } - - private static String getLanguage(Context context) { + public static String getLanguage(Context context) { return getLanguagePreference(context).getString(KEY_LANGUAGE, DEFAULT_LANGUAGE); } @@ -72,10 +66,6 @@ public static void setDefaultLanguage(Locale locale) { LanguageSetting.setDefaultLanguage(locale.getLanguage()); } - public static Locale getLocale() { - return getLocale(getLanguage()); - } - public static Locale getLocale(Context context) { return getLocale(getLanguage(context)); } diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java index 05a4317..0a6ac75 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java @@ -25,10 +25,12 @@ import android.content.Context; import android.content.Intent; import android.content.res.Configuration; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.util.DisplayMetrics; +import android.util.Log; import java.util.Locale; @@ -75,7 +77,7 @@ public final void setDefaultLanguage(Locale locale) { // Get current language public final String getLanguage() { - return LanguageSetting.getLanguage(); + return LanguageSetting.getLanguage(this); } // Get current locale @@ -96,7 +98,7 @@ private void checkBeforeLocaleChanging() { // Setup language to locale and language preference. // This method will called before onCreate. private void setupLanguage() { - Locale locale = LanguageSetting.getLocale(); + Locale locale = LanguageSetting.getLocale(this); setupLocale(locale); currentLanguage = locale.getLanguage(); LanguageSetting.setLanguage(this, locale.getLanguage()); @@ -116,7 +118,7 @@ private void updateLocaleConfiguration(Context context, Locale locale) { // Avoid duplicated setup private boolean isDuplicatedLanguageSetting(String language) { - return language.toLowerCase(Locale.getDefault()).equals(LanguageSetting.getLanguage()); + return language.toLowerCase(Locale.getDefault()).equals(LanguageSetting.getLanguage(this)); } // Let's take it change! (Using recreate method that available on API 11 or more. @@ -142,7 +144,7 @@ public void run() { // Check if locale has change while this activity was run to backstack. private void checkLocaleChange() { - if(!LanguageSetting.getLanguage().toLowerCase(Locale.getDefault()) + if(!LanguageSetting.getLanguage(this).toLowerCase(Locale.getDefault()) .equals(currentLanguage.toLowerCase(Locale.getDefault()))) { callDummyActivity(); recreate(); @@ -158,7 +160,8 @@ private void checkAfterLocaleChanging() { } private void callDummyActivity() { - startActivity(new Intent(this, BlankDummyActivity.class)); + Intent intent = new Intent(this, BlankDummyActivity.class); + startActivity(intent); } // Just override method locale change event From 11a08fdf4e008c893d2b0fb120a92772f58cf2de Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 28 Oct 2015 18:07:37 +0700 Subject: [PATCH 012/247] Update to 1.0.11 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index c6a0680..d2f555e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,8 +17,8 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=1.0.10 -VERSION_CODE=010010 +VERSION_NAME=1.0.11 +VERSION_CODE=010011 GROUP=com.akexorcist POM_DESCRIPTION=Language changeable activity library From c26bb5020ad3ad4509e4311bbad53af5c4edd2dc Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 29 Oct 2015 02:58:55 +0700 Subject: [PATCH 013/247] Fix stupid bug --- .../localizationactivity/LanguageSetting.java | 14 ++++++++++++-- .../localizationactivity/LocalizationActivity.java | 13 +++++-------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java index 1e4aac0..70e0606 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LanguageSetting.java @@ -35,6 +35,7 @@ public class LanguageSetting { private static final String PREFERENCE_LANGUAGE = "pref_language"; private static final String KEY_LANGUAGE = "key_language"; private static String DEFAULT_LANGUAGE = Locale.ENGLISH.getLanguage(); + private static String currentLanguage = Locale.ENGLISH.getLanguage(); public static void setDefaultLanguage(String language) { DEFAULT_LANGUAGE = language; @@ -45,6 +46,7 @@ public static String getDefaultLanguage() { } public static void setLanguage(Context context, String language) { + currentLanguage = language; SharedPreferences.Editor editor = getLanguagePreference(context).edit(); editor.putString(KEY_LANGUAGE, language); editor.apply(); @@ -54,7 +56,11 @@ public static void setLanguage(Context context, Locale locale) { setLanguage(context, locale.getLanguage()); } - public static String getLanguage(Context context) { + public static String getLanguage() { + return currentLanguage; + } + + private static String getLanguage(Context context) { return getLanguagePreference(context).getString(KEY_LANGUAGE, DEFAULT_LANGUAGE); } @@ -66,6 +72,10 @@ public static void setDefaultLanguage(Locale locale) { LanguageSetting.setDefaultLanguage(locale.getLanguage()); } + public static Locale getLocale() { + return getLocale(getLanguage()); + } + public static Locale getLocale(Context context) { return getLocale(getLanguage(context)); } @@ -74,4 +84,4 @@ public static Locale getLocale(String language) { return new Locale(language.toLowerCase(Locale.getDefault())); } -} +} \ No newline at end of file diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java index 0a6ac75..522d177 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java @@ -25,12 +25,10 @@ import android.content.Context; import android.content.Intent; import android.content.res.Configuration; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.util.DisplayMetrics; -import android.util.Log; import java.util.Locale; @@ -77,7 +75,7 @@ public final void setDefaultLanguage(Locale locale) { // Get current language public final String getLanguage() { - return LanguageSetting.getLanguage(this); + return LanguageSetting.getLanguage(); } // Get current locale @@ -118,7 +116,7 @@ private void updateLocaleConfiguration(Context context, Locale locale) { // Avoid duplicated setup private boolean isDuplicatedLanguageSetting(String language) { - return language.toLowerCase(Locale.getDefault()).equals(LanguageSetting.getLanguage(this)); + return language.toLowerCase(Locale.getDefault()).equals(LanguageSetting.getLanguage()); } // Let's take it change! (Using recreate method that available on API 11 or more. @@ -144,7 +142,7 @@ public void run() { // Check if locale has change while this activity was run to backstack. private void checkLocaleChange() { - if(!LanguageSetting.getLanguage(this).toLowerCase(Locale.getDefault()) + if(!LanguageSetting.getLanguage().toLowerCase(Locale.getDefault()) .equals(currentLanguage.toLowerCase(Locale.getDefault()))) { callDummyActivity(); recreate(); @@ -160,8 +158,7 @@ private void checkAfterLocaleChanging() { } private void callDummyActivity() { - Intent intent = new Intent(this, BlankDummyActivity.class); - startActivity(intent); + startActivity(new Intent(this, BlankDummyActivity.class)); } // Just override method locale change event @@ -170,4 +167,4 @@ public void onBeforeLocaleChanged() { } @Override public void onAfterLocaleChanged() { } -} +} \ No newline at end of file From b55af3622aa9a4306e2c06f0cd63da9f0a626175 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 29 Oct 2015 02:59:05 +0700 Subject: [PATCH 014/247] Update to 1.0.12 --- gradle.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index d2f555e..5e9e3b5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,9 +17,9 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=1.0.11 -VERSION_CODE=010011 -GROUP=com.akexorcist +VERSION_NAME=1.0.12 +VERSION_CODE=010012 +GROUP=com.akexorcist./ POM_DESCRIPTION=Language changeable activity library POM_URL=https://github.com/akexorcist/Android-LocalizationActivity From 257b17ad760618303642691b0cec4f157a64ac1e Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 29 Oct 2015 10:46:33 +0700 Subject: [PATCH 015/247] Fix GROUP and update to 1.0.13 --- gradle.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5e9e3b5..49bf0e4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,9 +17,9 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=1.0.12 -VERSION_CODE=010012 -GROUP=com.akexorcist./ +VERSION_NAME=1.0.13 +VERSION_CODE=010013 +GROUP=com.akexorcist POM_DESCRIPTION=Language changeable activity library POM_URL=https://github.com/akexorcist/Android-LocalizationActivity From e2dd050d8ed2f17060a4f3a0a63f74fdc1e16a89 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Mon, 30 Nov 2015 07:37:08 +0700 Subject: [PATCH 016/247] Update android 23 --- .travis.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index abeb93f..870dee5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,10 +3,11 @@ jdk: oraclejdk7 android: components: - - build-tools-22.0.1 - - android-22 - - extra-android-support + - tools + - build-tools-23.0.1 + - android-23 - extra-android-m2repository + - extra-android-support notifications: email: false @@ -14,4 +15,4 @@ notifications: before_install: - chmod +x gradlew -script: ./gradlew clean \ No newline at end of file +script: ./gradlew clean From db626c04fa0e4fd9c69ebe20e84de84f036ae3be Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Sun, 6 Dec 2015 15:42:11 +0700 Subject: [PATCH 017/247] Update README.md --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index bf41cb2..d9c4612 100644 --- a/README.md +++ b/README.md @@ -212,11 +212,6 @@ Only support API 11 and higher Because [recreate activity method](http://developer.android.com/intl/es/reference/android/app/Activity.html#recreate()) was added in API 11. So this library isn't available for lower version than API 11 -Activity Blinking Problem -=========================== -It's normal that the activity is blinking because it was recreated. - - Documentation =========================== English Version : http://www.akexorcist.com/2015/07/localization-activity-best-way-to-handle-language-en.html From d7301cc4dd3de83abba2a4f0104ac1bb92f901e6 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 11 Feb 2016 01:08:14 +0700 Subject: [PATCH 018/247] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d9c4612..fe24b43 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ -[![Build Status](https://travis-ci.org/akexorcist/Android-LocalizationActivity.svg?branch=master)](https://travis-ci.org/akexorcist/Android-LocalizationActivity) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.akexorcist/localizationactivity/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.akexorcist/localizationactivity) +[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Android--LocalizationActivity-brightgreen.svg?style=flat)](http://android-arsenal.com/details/1/2890) [![Build Status](https://travis-ci.org/akexorcist/Android-LocalizationActivity.svg?branch=master)](https://travis-ci.org/akexorcist/Android-LocalizationActivity) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.akexorcist/localizationactivity/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.akexorcist/localizationactivity) [![Methods Count](https://img.shields.io/badge/Methods and size-core: 77 | deps: 13224 | 21 KB-e91e63.svg)](http://www.methodscount.com/?lib=com.akexorcist%3Alocalizationactivity%3A1.0.9) + Android-LocalizationActivity ============================== From d96e75bb99a43739e77f010d546e212c06c324ac Mon Sep 17 00:00:00 2001 From: Aleksander Mielczarek Date: Sun, 3 Apr 2016 18:33:32 +0200 Subject: [PATCH 019/247] Move localization logic to delegate --- build.gradle | 2 +- gradle.properties | 2 +- localizationActivity/build.gradle | 2 +- .../LocalizationActivity.java | 120 ++------------ .../LocalizationDelegate.java | 154 ++++++++++++++++++ 5 files changed, 172 insertions(+), 108 deletions(-) create mode 100644 localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationDelegate.java diff --git a/build.gradle b/build.gradle index cb1ff93..2a7b766 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.2.3' + classpath 'com.android.tools.build:gradle:1.5.0' // 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 49bf0e4..1b4581b 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=23.0.1 +ANDROID_BUILD_TOOLS_VERSION=23.0.3 ANDROID_COMPILE_SDK_VERSION=23 ANDROID_TARGET_SDK_VERSION=23 ANDROID_MIN_SDK=11 \ No newline at end of file diff --git a/localizationActivity/build.gradle b/localizationActivity/build.gradle index 3f24ef5..a0b96a3 100644 --- a/localizationActivity/build.gradle +++ b/localizationActivity/build.gradle @@ -21,7 +21,7 @@ android { } dependencies { - compile 'com.android.support:appcompat-v7:22.2.1' + compile 'com.android.support:appcompat-v7:23.2.1' } apply from: '../maven_push.gradle' \ No newline at end of file diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java index 522d177..556a0f3 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationActivity.java @@ -22,13 +22,8 @@ package com.akexorcist.localizationactivity; -import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; import android.os.Bundle; -import android.os.Handler; import android.support.v7.app.AppCompatActivity; -import android.util.DisplayMetrics; import java.util.Locale; @@ -36,129 +31,44 @@ * Created by Akexorcist on 7/20/15 AD. */ public class LocalizationActivity extends AppCompatActivity implements OnLocaleChangedListener { - // Bundle key - private static final String KEY_ACTIVIY_LOCALE_CHANGED = "activity_locale_changed"; - // Boolean flag to check that activity was recreated from locale changed. - private boolean isLocalizationChanged = false; - - // Prepare default language. - private String currentLanguage = LanguageSetting.getDefaultLanguage(); + private LocalizationDelegate localizationDelegate = new LocalizationDelegate(this); @Override public void onCreate(Bundle savedInstanceState) { - setupLanguage(); - checkBeforeLocaleChanging(); + localizationDelegate.addOnLocaleChengedListener(this); + localizationDelegate.onCreate(savedInstanceState); super.onCreate(savedInstanceState); } - // Provide method to set application language by country name. + @Override + public void onResume() { + super.onResume(); + localizationDelegate.onResume(); + } + public final void setLanguage(String language) { - if (!isDuplicatedLanguageSetting(language)) { - LanguageSetting.setLanguage(this, language); - notifyLanguageChanged(); - } + localizationDelegate.setLanguage(language); } - // Provide method to set application language by locale. public final void setLanguage(Locale locale) { - setLanguage(locale.getLanguage()); + localizationDelegate.setLanguage(locale); } public final void setDefaultLanguage(String language) { - LanguageSetting.setDefaultLanguage(language); + localizationDelegate.setDefaultLanguage(language); } public final void setDefaultLanguage(Locale locale) { - LanguageSetting.setDefaultLanguage(locale.getLanguage()); + localizationDelegate.setDefaultLanguage(locale); } - // Get current language public final String getLanguage() { - return LanguageSetting.getLanguage(); + return localizationDelegate.getLanguage(); } - // Get current locale public final Locale getLocale() { - return LanguageSetting.getLocale(this); - } - - // Check that bundle come from locale change. - // If yes, bundle will obe remove and set boolean flag to "true". - private void checkBeforeLocaleChanging() { - boolean isLocalizationChanged = getIntent().getBooleanExtra(KEY_ACTIVIY_LOCALE_CHANGED, false); - if(isLocalizationChanged) { - this.isLocalizationChanged = true; - getIntent().removeExtra(KEY_ACTIVIY_LOCALE_CHANGED); - } - } - - // Setup language to locale and language preference. - // This method will called before onCreate. - private void setupLanguage() { - Locale locale = LanguageSetting.getLocale(this); - setupLocale(locale); - currentLanguage = locale.getLanguage(); - LanguageSetting.setLanguage(this, locale.getLanguage()); - } - - // Set locale configuration. - private void setupLocale(Locale locale) { - updateLocaleConfiguration(this, locale); - } - - private void updateLocaleConfiguration(Context context, Locale locale) { - Configuration config = new Configuration(); - config.locale = locale; - DisplayMetrics dm = context.getResources().getDisplayMetrics(); - context.getResources().updateConfiguration(config, dm); - } - - // Avoid duplicated setup - private boolean isDuplicatedLanguageSetting(String language) { - return language.toLowerCase(Locale.getDefault()).equals(LanguageSetting.getLanguage()); - } - - // Let's take it change! (Using recreate method that available on API 11 or more. - private void notifyLanguageChanged() { - onBeforeLocaleChanged(); - getIntent().putExtra(KEY_ACTIVIY_LOCALE_CHANGED, true); - callDummyActivity(); - recreate(); - } - - // If activity is run to backstack. So we have to check if this activity is resume working. - @Override - public void onResume() { - super.onResume(); - new Handler().post(new Runnable() { - @Override - public void run() { - checkLocaleChange(); - checkAfterLocaleChanging(); - } - }); - } - - // Check if locale has change while this activity was run to backstack. - private void checkLocaleChange() { - if(!LanguageSetting.getLanguage().toLowerCase(Locale.getDefault()) - .equals(currentLanguage.toLowerCase(Locale.getDefault()))) { - callDummyActivity(); - recreate(); - } - } - - // Call override method if local is really changed - private void checkAfterLocaleChanging() { - if(isLocalizationChanged) { - onAfterLocaleChanged(); - isLocalizationChanged = false; - } - } - - private void callDummyActivity() { - startActivity(new Intent(this, BlankDummyActivity.class)); + return localizationDelegate.getLocale(); } // Just override method locale change event diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationDelegate.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationDelegate.java new file mode 100644 index 0000000..501736c --- /dev/null +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationDelegate.java @@ -0,0 +1,154 @@ +package com.akexorcist.localizationactivity; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; +import android.os.Bundle; +import android.os.Handler; +import android.util.DisplayMetrics; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +/** + * Created by Aleksander Mielczarek on 03.04.2016. + */ +public class LocalizationDelegate { + + private static final String KEY_ACTIVIY_LOCALE_CHANGED = "activity_locale_changed"; + + // Boolean flag to check that activity was recreated from locale changed. + private boolean isLocalizationChanged = false; + + // Prepare default language. + private String currentLanguage = LanguageSetting.getDefaultLanguage(); + + private final Activity activity; + private final List localeChangedListeners = new ArrayList<>(); + + public LocalizationDelegate(Activity activity) { + this.activity = activity; + } + + public void addOnLocaleChengedListener(OnLocaleChangedListener onLocaleChangedListener) { + localeChangedListeners.add(onLocaleChangedListener); + } + + public void onCreate(Bundle savedInstanceState) { + setupLanguage(); + checkBeforeLocaleChanging(); + } + + // Provide method to set application language by country name. + public final void setLanguage(String language) { + if (!isDuplicatedLanguageSetting(language)) { + LanguageSetting.setLanguage(activity, language); + notifyLanguageChanged(); + } + } + + // Provide method to set application language by locale. + public final void setLanguage(Locale locale) { + setLanguage(locale.getLanguage()); + } + + public final void setDefaultLanguage(String language) { + LanguageSetting.setDefaultLanguage(language); + } + + public final void setDefaultLanguage(Locale locale) { + LanguageSetting.setDefaultLanguage(locale.getLanguage()); + } + + // Get current language + public final String getLanguage() { + return LanguageSetting.getLanguage(); + } + + // Get current locale + public final Locale getLocale() { + return LanguageSetting.getLocale(activity); + } + + // Check that bundle come from locale change. + // If yes, bundle will obe remove and set boolean flag to "true". + private void checkBeforeLocaleChanging() { + boolean isLocalizationChanged = activity.getIntent().getBooleanExtra(KEY_ACTIVIY_LOCALE_CHANGED, false); + if (isLocalizationChanged) { + this.isLocalizationChanged = true; + activity.getIntent().removeExtra(KEY_ACTIVIY_LOCALE_CHANGED); + } + } + + // Setup language to locale and language preference. + // This method will called before onCreate. + private void setupLanguage() { + Locale locale = LanguageSetting.getLocale(activity); + setupLocale(locale); + currentLanguage = locale.getLanguage(); + LanguageSetting.setLanguage(activity, locale.getLanguage()); + } + + // Set locale configuration. + private void setupLocale(Locale locale) { + updateLocaleConfiguration(activity, locale); + } + + private void updateLocaleConfiguration(Context context, Locale locale) { + Configuration config = new Configuration(); + config.locale = locale; + DisplayMetrics dm = context.getResources().getDisplayMetrics(); + context.getResources().updateConfiguration(config, dm); + } + + // Avoid duplicated setup + private boolean isDuplicatedLanguageSetting(String language) { + return language.toLowerCase(Locale.getDefault()).equals(LanguageSetting.getLanguage()); + } + + // Let's take it change! (Using recreate method that available on API 11 or more. + private void notifyLanguageChanged() { + for (OnLocaleChangedListener changedListener : localeChangedListeners) { + changedListener.onBeforeLocaleChanged(); + } + activity.getIntent().putExtra(KEY_ACTIVIY_LOCALE_CHANGED, true); + callDummyActivity(); + activity.recreate(); + } + + // If activity is run to backstack. So we have to check if this activity is resume working. + public void onResume() { + new Handler().post(new Runnable() { + @Override + public void run() { + checkLocaleChange(); + checkAfterLocaleChanging(); + } + }); + } + + // Check if locale has change while this activity was run to backstack. + private void checkLocaleChange() { + if (!LanguageSetting.getLanguage().toLowerCase(Locale.getDefault()) + .equals(currentLanguage.toLowerCase(Locale.getDefault()))) { + callDummyActivity(); + activity.recreate(); + } + } + + // Call override method if local is really changed + private void checkAfterLocaleChanging() { + if (isLocalizationChanged) { + for (OnLocaleChangedListener listener : localeChangedListeners) { + listener.onAfterLocaleChanged(); + } + isLocalizationChanged = false; + } + } + + private void callDummyActivity() { + activity.startActivity(new Intent(activity, BlankDummyActivity.class)); + } +} From efcf97dd125c0e3bb9bf2eb3045ee20ccd82af69 Mon Sep 17 00:00:00 2001 From: Aleksander Mielczarek Date: Sun, 3 Apr 2016 18:36:49 +0200 Subject: [PATCH 020/247] When update Configuration, get previous config instead of creating new one --- .../akexorcist/localizationactivity/LocalizationDelegate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationDelegate.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationDelegate.java index 501736c..88e5e3f 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationDelegate.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/LocalizationDelegate.java @@ -97,7 +97,7 @@ private void setupLocale(Locale locale) { } private void updateLocaleConfiguration(Context context, Locale locale) { - Configuration config = new Configuration(); + Configuration config = context.getResources().getConfiguration(); config.locale = locale; DisplayMetrics dm = context.getResources().getDisplayMetrics(); context.getResources().updateConfiguration(config, dm); From 14992cd81398e6be378738174234f92bc7987bfc Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 22 Jun 2016 23:48:22 +0700 Subject: [PATCH 021/247] Update build tools and gradle plugin --- app/build.gradle | 3 +-- build.gradle | 2 +- gradle.properties | 10 +++++----- gradle/wrapper/gradle-wrapper.properties | 4 ++-- localizationActivity/build.gradle | 2 +- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2feceb6..e5a7889 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,7 +22,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.1.0' - compile 'com.android.support:design:23.1.0' + compile 'com.android.support:appcompat-v7:24.0.0' compile project(':localizationActivity') } diff --git a/build.gradle b/build.gradle index 2a7b766..4784b66 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.5.0' + classpath 'com.android.tools.build:gradle:2.1.0' // 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 1b4581b..de8ba0f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,8 +17,8 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=1.0.13 -VERSION_CODE=010013 +VERSION_NAME=1.1.0 +VERSION_CODE=010100 GROUP=com.akexorcist POM_DESCRIPTION=Language changeable activity library @@ -32,7 +32,7 @@ POM_LICENCE_DIST=repo POM_DEVELOPER_ID=Akexorcist POM_DEVELOPER_NAME=Somkiat Khitwongwattana -ANDROID_BUILD_TOOLS_VERSION=23.0.3 -ANDROID_COMPILE_SDK_VERSION=23 -ANDROID_TARGET_SDK_VERSION=23 +ANDROID_BUILD_TOOLS_VERSION=24.0.0 +ANDROID_COMPILE_SDK_VERSION=24 +ANDROID_TARGET_SDK_VERSION=24 ANDROID_MIN_SDK=11 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae8a8fc..c2379bc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Jul 20 22:06:41 ICT 2015 +#Wed Jun 22 23:29:02 ICT 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip diff --git a/localizationActivity/build.gradle b/localizationActivity/build.gradle index a0b96a3..4cdf2e3 100644 --- a/localizationActivity/build.gradle +++ b/localizationActivity/build.gradle @@ -21,7 +21,7 @@ android { } dependencies { - compile 'com.android.support:appcompat-v7:23.2.1' + compile 'com.android.support:appcompat-v7:24.0.0' } apply from: '../maven_push.gradle' \ No newline at end of file From e7a00b5f0c7e2d752429c1042ea03e8c5ad7ab36 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Wed, 22 Jun 2016 23:51:50 +0700 Subject: [PATCH 022/247] Update travis code --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 870dee5..23d5718 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,8 +4,8 @@ jdk: oraclejdk7 android: components: - tools - - build-tools-23.0.1 - - android-23 + - build-tools-24.0.0 + - android-24 - extra-android-m2repository - extra-android-support From d828434707a6c19cb6b3c640b2b2eae65f89556d Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 23 Jun 2016 00:07:05 +0700 Subject: [PATCH 023/247] Update README.md --- README.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fe24b43..2365015 100644 --- a/README.md +++ b/README.md @@ -44,13 +44,74 @@ Feature * Very easy to use it. -Extend from AppCompatActivity +LocalizationActivity extends from AppCompatActivity =========================== LocalizationActivity is extend from AppCompatActivity class. So you still can use all method from AppCompatActivity class. ![Header image](https://raw.githubusercontent.com/akexorcist/Android-LocalizationActivity/master/image/03-extend.jpg) +Don't like AppCompat? Try delegate way +=========================== +(By @AleksanderMielczarek) +```java +import android.os.Bundle; + +import com.akexorcist.localizationactivity.LocalizationDelegate; + +import java.util.Locale; + +public class CustomLocalizationActivity extends Activity implements OnLocaleChangedListener { + + private LocalizationDelegate localizationDelegate = new LocalizationDelegate(this); + + @Override + public void onCreate(Bundle savedInstanceState) { + localizationDelegate.addOnLocaleChengedListener(this); + localizationDelegate.onCreate(savedInstanceState); + super.onCreate(savedInstanceState); + } + + @Override + public void onResume() { + super.onResume(); + localizationDelegate.onResume(); + } + + public final void setLanguage(String language) { + localizationDelegate.setLanguage(language); + } + + public final void setLanguage(Locale locale) { + localizationDelegate.setLanguage(locale); + } + + public final void setDefaultLanguage(String language) { + localizationDelegate.setDefaultLanguage(language); + } + + public final void setDefaultLanguage(Locale locale) { + localizationDelegate.setDefaultLanguage(locale); + } + + public final String getLanguage() { + return localizationDelegate.getLanguage(); + } + + public final Locale getLocale() { + return localizationDelegate.getLocale(); + } + + // Just override method locale change event + @Override + public void onBeforeLocaleChanged() { } + + @Override + public void onAfterLocaleChanged() { } +} +``` + + Usage =========================== This is an example. @@ -208,11 +269,6 @@ Fragment language configuration is depending with activity. If activity language About Save/Restore Instance State. Read more on The [Real Best Practices to Save/Restore Activity's and Fragment's state.](http://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en) -Only support API 11 and higher -=========================== -Because [recreate activity method](http://developer.android.com/intl/es/reference/android/app/Activity.html#recreate()) was added in API 11. So this library isn't available for lower version than API 11 - - Documentation =========================== English Version : http://www.akexorcist.com/2015/07/localization-activity-best-way-to-handle-language-en.html @@ -220,6 +276,12 @@ English Version : http://www.akexorcist.com/2015/07/localization-activity-best-w Thai Version : http://www.akexorcist.com/2015/07/localization-activity-best-way-to-handle-language.html +Special Thanks +=========================== +@first087 +@AleksanderMielczarek + + Licence =========================== Copyright 2015 Akexorcist From 88ab8cd06d9b84a6fac6d0995d5f58897e2134c6 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 23 Jun 2016 00:07:19 +0700 Subject: [PATCH 024/247] Update README.md From a1f94db48b796973555e980a69fe4e55658d3260 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 23 Jun 2016 00:10:56 +0700 Subject: [PATCH 025/247] Update README.md --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2365015..3f12807 100644 --- a/README.md +++ b/README.md @@ -27,15 +27,18 @@ Maven com.akexorcist localizationactivity - 1.0.4 + 1.1.0 ``` Gradle ``` -compile 'com.akexorcist:localizationactivity:1.0.9' +compile 'com.akexorcist:localizationactivity:1.1.1' ``` +(Optional) You can exclude `com.android.support:appcompat-v7`, if your project doens't use AppCompat v7. + + Feature =========================== * On-time language changing supported. @@ -51,7 +54,7 @@ LocalizationActivity is extend from AppCompatActivity class. So you still can us ![Header image](https://raw.githubusercontent.com/akexorcist/Android-LocalizationActivity/master/image/03-extend.jpg) -Don't like AppCompat? Try delegate way +Don't like AppCompat v7? Try delegate way =========================== (By @AleksanderMielczarek) ```java From 44d36301fb818c9bc32098fdf6ff1398a4f348ed Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 23 Jun 2016 00:12:05 +0700 Subject: [PATCH 026/247] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3f12807..ccb35f8 100644 --- a/README.md +++ b/README.md @@ -33,10 +33,10 @@ Maven Gradle ``` -compile 'com.akexorcist:localizationactivity:1.1.1' +compile 'com.akexorcist:localizationactivity:1.1.0' ``` -(Optional) You can exclude `com.android.support:appcompat-v7`, if your project doens't use AppCompat v7. +(Optional) You can exclude `com.android.support:appcompat-v7`, if your project doens't use AppCompat v7 and declare this library with delegate way. Feature From 74814e21b712e50a9ce2c3180bfd20692c5a4f15 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 23 Jun 2016 00:47:05 +0700 Subject: [PATCH 027/247] Change to public class --- .../localizationactivity/OnLocaleChangedListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/OnLocaleChangedListener.java b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/OnLocaleChangedListener.java index 240f642..2701fdf 100644 --- a/localizationActivity/src/main/java/com/akexorcist/localizationactivity/OnLocaleChangedListener.java +++ b/localizationActivity/src/main/java/com/akexorcist/localizationactivity/OnLocaleChangedListener.java @@ -25,7 +25,7 @@ /** * Created by Akexorcist on 7/21/15 AD. */ -interface OnLocaleChangedListener { +public interface OnLocaleChangedListener { void onBeforeLocaleChanged(); void onAfterLocaleChanged(); } From d38fb4de872eb675fb8c373c26833fec19e1f407 Mon Sep 17 00:00:00 2001 From: Akexorcist Date: Thu, 23 Jun 2016 00:47:19 +0700 Subject: [PATCH 028/247] Add custom localization activity exsample --- app/src/main/AndroidManifest.xml | 6 +- .../localizationapp/MainActivity.java | 5 +- .../customactivity/CustomActivity.java | 63 ++++++++++++++++++ .../customactivity/SimpleCustomActivity.java | 66 +++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 6 ++ .../res/layout/activity_simple_custom.xml | 39 +++++++++++ app/src/main/res/values-it/strings.xml | 1 + app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-ko/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values-th/strings.xml | 1 + app/src/main/res/values-zh/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 13 files changed, 188 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/akexorcist/localizationapp/customactivity/CustomActivity.java create mode 100644 app/src/main/java/com/akexorcist/localizationapp/customactivity/SimpleCustomActivity.java create mode 100644 app/src/main/res/layout/activity_simple_custom.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index abd0d88..6b773b9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,8 +7,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> - + @@ -18,6 +17,7 @@ + - + \ No newline at end of file diff --git a/app/src/main/java/com/akexorcist/localizationapp/MainActivity.java b/app/src/main/java/com/akexorcist/localizationapp/MainActivity.java index cb71148..8cccf75 100644 --- a/app/src/main/java/com/akexorcist/localizationapp/MainActivity.java +++ b/app/src/main/java/com/akexorcist/localizationapp/MainActivity.java @@ -4,8 +4,8 @@ import android.os.Bundle; import android.view.View; -import com.akexorcist.localizationactivity.LanguageSetting; import com.akexorcist.localizationactivity.LocalizationActivity; +import com.akexorcist.localizationapp.customactivity.SimpleCustomActivity; import com.akexorcist.localizationapp.simpleactivity.SimpleActivity; import com.akexorcist.localizationapp.simplefragment.SimpleFragmentActivity; import com.akexorcist.localizationapp.viewpager.ViewPagerActivity; @@ -20,6 +20,7 @@ public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); findViewById(R.id.btn_simple_activity).setOnClickListener(this); + findViewById(R.id.btn_custom_activity).setOnClickListener(this); findViewById(R.id.btn_activity_fragment).setOnClickListener(this); findViewById(R.id.btn_activity_view_pager).setOnClickListener(this); } @@ -29,6 +30,8 @@ public void onClick(View v) { int id = v.getId(); if (id == R.id.btn_simple_activity) { goToActivity(SimpleActivity.class); + } else if (id == R.id.btn_custom_activity) { + goToActivity(SimpleCustomActivity.class); } else if (id == R.id.btn_activity_fragment) { goToActivity(SimpleFragmentActivity.class); } else if (id == R.id.btn_activity_view_pager) { diff --git a/app/src/main/java/com/akexorcist/localizationapp/customactivity/CustomActivity.java b/app/src/main/java/com/akexorcist/localizationapp/customactivity/CustomActivity.java new file mode 100644 index 0000000..7fea660 --- /dev/null +++ b/app/src/main/java/com/akexorcist/localizationapp/customactivity/CustomActivity.java @@ -0,0 +1,63 @@ +package com.akexorcist.localizationapp.customactivity; + +import android.app.Activity; +import android.os.Bundle; + +import com.akexorcist.localizationactivity.LocalizationDelegate; +import com.akexorcist.localizationactivity.OnLocaleChangedListener; + +import java.util.Locale; + +/** + * Created by Akexorcist on 6/23/16 AD. + */ +public class CustomActivity extends Activity implements OnLocaleChangedListener { + + private LocalizationDelegate localizationDelegate = new LocalizationDelegate(this); + + @Override + public void onCreate(Bundle savedInstanceState) { + localizationDelegate.addOnLocaleChengedListener(this); + localizationDelegate.onCreate(savedInstanceState); + super.onCreate(savedInstanceState); + } + + @Override + public void onResume() { + super.onResume(); + localizationDelegate.onResume(); + } + + public final void setLanguage(String language) { + localizationDelegate.setLanguage(language); + } + + public final void setLanguage(Locale locale) { + localizationDelegate.setLanguage(locale); + } + + public final void setDefaultLanguage(String language) { + localizationDelegate.setDefaultLanguage(language); + } + + public final void setDefaultLanguage(Locale locale) { + localizationDelegate.setDefaultLanguage(locale); + } + + public final String getLanguage() { + return localizationDelegate.getLanguage(); + } + + public final Locale getLocale() { + return localizationDelegate.getLocale(); + } + + // Just override method locale change event + @Override + public void onBeforeLocaleChanged() { + } + + @Override + public void onAfterLocaleChanged() { + } +} diff --git a/app/src/main/java/com/akexorcist/localizationapp/customactivity/SimpleCustomActivity.java b/app/src/main/java/com/akexorcist/localizationapp/customactivity/SimpleCustomActivity.java new file mode 100644 index 0000000..39c1cb8 --- /dev/null +++ b/app/src/main/java/com/akexorcist/localizationapp/customactivity/SimpleCustomActivity.java @@ -0,0 +1,66 @@ +package com.akexorcist.localizationapp.customactivity; + +import android.os.Bundle; +import android.view.View; +import android.widget.HorizontalScrollView; + +import com.akexorcist.localizationapp.R; + +public class SimpleCustomActivity extends CustomActivity implements View.OnClickListener { + private final String KEY_SCROLL_X = "scroll_x"; + + private HorizontalScrollView svLanguageChooser; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_simple); + + // Activity title is not change the language automatically. + setTitle(R.string.hello_world); + + findViewById(R.id.btn_america).setOnClickListener(this); + findViewById(R.id.btn_china).setOnClickListener(this); + findViewById(R.id.btn_italy).setOnClickListener(this); + findViewById(R.id.btn_japan).setOnClickListener(this); + findViewById(R.id.btn_korea).setOnClickListener(this); + findViewById(R.id.btn_portugal).setOnClickListener(this); + findViewById(R.id.btn_thai).setOnClickListener(this); + + svLanguageChooser = (HorizontalScrollView) findViewById(R.id.sv_language_chooser); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + // Save x-position of horizontal scroll view. + outState.putInt(KEY_SCROLL_X, svLanguageChooser.getScrollX()); + super.onSaveInstanceState(outState); + } + + @Override + public void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + // Restore x-position of horizontal scroll view. + svLanguageChooser.scrollTo(savedInstanceState.getInt(KEY_SCROLL_X), 0); + } + + @Override + public void onClick(View v) { + int id = v.getId(); + if (id == R.id.btn_america) { + setLanguage("en"); + } else if (id == R.id.btn_china) { + setLanguage("zh"); + } else if (id == R.id.btn_italy) { + setLanguage("it"); + } else if (id == R.id.btn_japan) { + setLanguage("ja"); + } else if (id == R.id.btn_korea) { + setLanguage("ko"); + } else if (id == R.id.btn_portugal) { + setLanguage("pt"); + } else if (id == R.id.btn_thai) { + setLanguage("th"); + } + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index caa59de..adfa61e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -32,6 +32,12 @@ android:layout_height="wrap_content" android:text="@string/simple_activity" /> +