From 0a9c0420f4e26b25cb6e082f2edc15fab316f353 Mon Sep 17 00:00:00 2001 From: Mattia Date: Tue, 24 Jan 2017 16:50:11 +0100 Subject: [PATCH] Added custom view to core --- androidbase-core/build.gradle | 1 + .../custom_views/WarningTextInputLayout.java | 73 +++++++++++++++++++ .../src/main/res/drawable/ic_warning_24dp.xml | 9 +++ .../src/main/res/values/colors.xml | 2 + .../src/main/res/values/styles.xml | 10 +++ androidbase/build.gradle | 4 +- .../account/BaseLoginActivity.java | 6 +- .../account/BaseRegistrazioneActivity.java | 4 +- .../androidbase/account/SignUpElement.java | 4 +- .../activity/LocationActivity.java | 2 +- .../androidbase/activity/PickerActivity.java | 6 +- .../androidbase/gallery/FullImageAdapter.java | 2 +- .../tutorial/BaseTutorialActivity.java | 2 +- .../tutorial/TutorialFragment.java | 2 +- .../webservice/BaseLoopJSecurity.java | 4 +- androidbase/src/main/res/values/colors.xml | 2 +- androidbase/src/main/res/values/styles.xml | 4 +- .../androidbaseproject/MainActivity.java | 4 +- 18 files changed, 118 insertions(+), 23 deletions(-) create mode 100644 androidbase-core/src/main/java/com/mr_apps/androidbasecore/custom_views/WarningTextInputLayout.java create mode 100644 androidbase-core/src/main/res/drawable/ic_warning_24dp.xml create mode 100644 androidbase-core/src/main/res/values/styles.xml diff --git a/androidbase-core/build.gradle b/androidbase-core/build.gradle index f2f90ba..b1defc0 100644 --- a/androidbase-core/build.gradle +++ b/androidbase-core/build.gradle @@ -27,5 +27,6 @@ dependencies { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.1.0' + compile 'com.android.support:design:25.1.0' testCompile 'junit:junit:4.12' } diff --git a/androidbase-core/src/main/java/com/mr_apps/androidbasecore/custom_views/WarningTextInputLayout.java b/androidbase-core/src/main/java/com/mr_apps/androidbasecore/custom_views/WarningTextInputLayout.java new file mode 100644 index 0000000..7774ee3 --- /dev/null +++ b/androidbase-core/src/main/java/com/mr_apps/androidbasecore/custom_views/WarningTextInputLayout.java @@ -0,0 +1,73 @@ +package com.mr_apps.androidbasecore.custom_views; + +import android.content.Context; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.support.design.widget.TextInputLayout; +import android.support.graphics.drawable.VectorDrawableCompat; +import android.support.v4.content.ContextCompat; +import android.util.AttributeSet; +import android.widget.EditText; + +import com.mr_apps.androidbasecore.R; + +/** + * Custom view used to create a TextInputLayout that displays a red warning drawable instead of the red text below the edit text + * + * @author Mattia Ruggiero + */ +public class WarningTextInputLayout extends TextInputLayout { + + boolean isErrorEnabled = false; + + public WarningTextInputLayout(Context context) { + super(context); + } + + public WarningTextInputLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public void setErrorEnabled(boolean enabled) { + EditText edit = getEditText(); + if (edit != null) { + if (enabled) { + edit.getBackground().setColorFilter(ContextCompat.getColor(getContext(), R.color.errorRed), PorterDuff.Mode.SRC_ATOP); + setHintTextAppearance(R.style.HintErrorStyle); + Drawable warning = Build.VERSION.SDK_INT >= 21 ? ContextCompat.getDrawable(getContext(), R.drawable.ic_warning_24dp) : VectorDrawableCompat.create(getContext().getResources(), R.drawable.ic_warning_24dp, null); + if (warning != null) + warning.setColorFilter(ContextCompat.getColor(getContext(), R.color.errorRed), PorterDuff.Mode.SRC_ATOP); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) + edit.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, warning, null); + else + edit.setCompoundDrawablesWithIntrinsicBounds(null, null, warning, null); + + } else { + if (Build.VERSION.SDK_INT >= 21) { + edit.getBackground().clearColorFilter(); + } else { + edit.getBackground().setColorFilter(ContextCompat.getColor(getContext(), R.color.colorAccent), PorterDuff.Mode.SRC_ATOP); + } + setHintTextAppearance(R.style.HintStyle); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) + edit.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, null, null); + else + edit.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); + } + isErrorEnabled = enabled; + } + } + + @Override + public boolean isErrorEnabled() { + return isErrorEnabled; + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + setErrorEnabled(false); + } +} diff --git a/androidbase-core/src/main/res/drawable/ic_warning_24dp.xml b/androidbase-core/src/main/res/drawable/ic_warning_24dp.xml new file mode 100644 index 0000000..b3a9e03 --- /dev/null +++ b/androidbase-core/src/main/res/drawable/ic_warning_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/androidbase-core/src/main/res/values/colors.xml b/androidbase-core/src/main/res/values/colors.xml index c247c52..7b8e05a 100644 --- a/androidbase-core/src/main/res/values/colors.xml +++ b/androidbase-core/src/main/res/values/colors.xml @@ -5,4 +5,6 @@ #912b35 #ae3742 + #D32F2F + \ No newline at end of file diff --git a/androidbase-core/src/main/res/values/styles.xml b/androidbase-core/src/main/res/values/styles.xml new file mode 100644 index 0000000..2395b07 --- /dev/null +++ b/androidbase-core/src/main/res/values/styles.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/androidbase/build.gradle b/androidbase/build.gradle index eeeb520..f9d8d7b 100644 --- a/androidbase/build.gradle +++ b/androidbase/build.gradle @@ -60,6 +60,6 @@ dependencies { compile 'com.github.chrisbanes:PhotoView:1.2.6' compile 'com.facebook.android:facebook-android-sdk:4.10.0' compile 'com.viewpagerindicator:library:2.4.1' - compile 'com.github.MrAPPs-RSM.MrAppsAndroidBase:androidbase-core:1.0.51' - compile 'com.github.MrAPPs-RSM.MrAppsAndroidBase:androidbase-utils:1.0.51' + compile 'com.github.MrAPPs-RSM.MrAppsAndroidBase:androidbase-core:1.0.52' + compile 'com.github.MrAPPs-RSM.MrAppsAndroidBase:androidbase-utils:1.0.52' } diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseLoginActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseLoginActivity.java index 6aa9c63..1358e92 100644 --- a/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseLoginActivity.java +++ b/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseLoginActivity.java @@ -35,9 +35,9 @@ import com.mr_apps.androidbase.R; import com.mr_apps.androidbase.activity.AbstractBaseActivity; import com.mr_apps.androidbase.custom_views.WarningTextInputLayout; -import com.mr_apps.androidbaseutils.utils.DrawableUtils; -import com.mr_apps.androidbaseutils.utils.Logger; -import com.mr_apps.androidbaseutils.utils.Utils; +import com.mr_apps.androidbaseutils.DrawableUtils; +import com.mr_apps.androidbaseutils.Logger; +import com.mr_apps.androidbaseutils.Utils; import org.json.JSONObject; diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseRegistrazioneActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseRegistrazioneActivity.java index 44561fc..4b46c2d 100644 --- a/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseRegistrazioneActivity.java +++ b/androidbase/src/main/java/com/mr_apps/androidbase/account/BaseRegistrazioneActivity.java @@ -14,8 +14,8 @@ import com.mr_apps.androidbase.R; import com.mr_apps.androidbase.activity.AbstractBaseActivity; import com.mr_apps.androidbase.custom_views.WarningTextInputLayout; -import com.mr_apps.androidbaseutils.utils.DrawableUtils; -import com.mr_apps.androidbaseutils.utils.TextViewUtils; +import com.mr_apps.androidbaseutils.DrawableUtils; +import com.mr_apps.androidbaseutils.TextViewUtils; import java.util.List; diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/account/SignUpElement.java b/androidbase/src/main/java/com/mr_apps/androidbase/account/SignUpElement.java index 7c57481..4c079c5 100644 --- a/androidbase/src/main/java/com/mr_apps/androidbase/account/SignUpElement.java +++ b/androidbase/src/main/java/com/mr_apps/androidbase/account/SignUpElement.java @@ -13,8 +13,8 @@ import android.view.View; import com.mr_apps.androidbase.R; -import com.mr_apps.androidbaseutils.utils.CustomDialog; -import com.mr_apps.androidbaseutils.utils.Utils; +import com.mr_apps.androidbaseutils.CustomDialog; +import com.mr_apps.androidbaseutils.Utils; /** * Class that manages a standard sign up element of the registration form diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/activity/LocationActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/activity/LocationActivity.java index eedf347..a8ea6a7 100644 --- a/androidbase/src/main/java/com/mr_apps/androidbase/activity/LocationActivity.java +++ b/androidbase/src/main/java/com/mr_apps/androidbase/activity/LocationActivity.java @@ -27,7 +27,7 @@ import com.loopj.android.http.TextHttpResponseHandler; import com.mr_apps.androidbase.R; import com.mr_apps.androidbase.preferences.GlobalPreferences; -import com.mr_apps.androidbaseutils.utils.Logger; +import com.mr_apps.androidbaseutils.Logger; import java.util.ArrayList; import java.util.List; diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/activity/PickerActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/activity/PickerActivity.java index 2882667..5176c52 100644 --- a/androidbase/src/main/java/com/mr_apps/androidbase/activity/PickerActivity.java +++ b/androidbase/src/main/java/com/mr_apps/androidbase/activity/PickerActivity.java @@ -15,9 +15,9 @@ import android.support.v7.app.AlertDialog; import com.mr_apps.androidbase.R; -import com.mr_apps.androidbaseutils.utils.BitmapUtils; -import com.mr_apps.androidbaseutils.utils.FileUtils; -import com.mr_apps.androidbaseutils.utils.FileUtils.ElementType; +import com.mr_apps.androidbaseutils.BitmapUtils; +import com.mr_apps.androidbaseutils.FileUtils; +import com.mr_apps.androidbaseutils.FileUtils.ElementType; import java.io.File; import java.util.ArrayList; diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/gallery/FullImageAdapter.java b/androidbase/src/main/java/com/mr_apps/androidbase/gallery/FullImageAdapter.java index a5b0f68..39e66ac 100644 --- a/androidbase/src/main/java/com/mr_apps/androidbase/gallery/FullImageAdapter.java +++ b/androidbase/src/main/java/com/mr_apps/androidbase/gallery/FullImageAdapter.java @@ -11,7 +11,7 @@ import com.bumptech.glide.BitmapTypeRequest; import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.BitmapImageViewTarget; -import com.mr_apps.androidbaseutils.utils.BitmapUtils; +import com.mr_apps.androidbaseutils.BitmapUtils; import java.util.List; diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/BaseTutorialActivity.java b/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/BaseTutorialActivity.java index fed0db5..0a5b3a2 100644 --- a/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/BaseTutorialActivity.java +++ b/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/BaseTutorialActivity.java @@ -11,7 +11,7 @@ import android.widget.RelativeLayout; import com.mr_apps.androidbase.R; -import com.mr_apps.androidbaseutils.utils.DrawableUtils; +import com.mr_apps.androidbaseutils.DrawableUtils; import com.viewpagerindicator.CirclePageIndicator; /** diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/TutorialFragment.java b/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/TutorialFragment.java index 8d39a9d..f1c22d5 100644 --- a/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/TutorialFragment.java +++ b/androidbase/src/main/java/com/mr_apps/androidbase/tutorial/TutorialFragment.java @@ -10,7 +10,7 @@ import android.widget.TextView; import com.mr_apps.androidbase.R; -import com.mr_apps.androidbaseutils.utils.Utils; +import com.mr_apps.androidbaseutils.Utils; /** * CLass that manages a fragment of the tutorial diff --git a/androidbase/src/main/java/com/mr_apps/androidbase/webservice/BaseLoopJSecurity.java b/androidbase/src/main/java/com/mr_apps/androidbase/webservice/BaseLoopJSecurity.java index accc5e8..87cc151 100644 --- a/androidbase/src/main/java/com/mr_apps/androidbase/webservice/BaseLoopJSecurity.java +++ b/androidbase/src/main/java/com/mr_apps/androidbase/webservice/BaseLoopJSecurity.java @@ -15,8 +15,8 @@ import com.loopj.android.http.ResponseHandlerInterface; import com.loopj.android.http.TextHttpResponseHandler; import com.mr_apps.androidbase.preferences.SecurityPreferences; -import com.mr_apps.androidbaseutils.utils.Logger; -import com.mr_apps.androidbaseutils.utils.Utils; +import com.mr_apps.androidbaseutils.Logger; +import com.mr_apps.androidbaseutils.Utils; import java.io.UnsupportedEncodingException; import java.nio.channels.NotYetConnectedException; diff --git a/androidbase/src/main/res/values/colors.xml b/androidbase/src/main/res/values/colors.xml index 406f6f7..c604c08 100644 --- a/androidbase/src/main/res/values/colors.xml +++ b/androidbase/src/main/res/values/colors.xml @@ -2,7 +2,7 @@ #999999 - #D32F2F + #D32F2F #DC4A39 #C64233 diff --git a/androidbase/src/main/res/values/styles.xml b/androidbase/src/main/res/values/styles.xml index c3fee45..3d430f9 100644 --- a/androidbase/src/main/res/values/styles.xml +++ b/androidbase/src/main/res/values/styles.xml @@ -87,10 +87,10 @@ ?attr/selectableItemBackgroundBorderless -