diff --git a/alerter/src/main/java/com/tapadoo/alerter/Alert.kt b/alerter/src/main/java/com/tapadoo/alerter/Alert.kt index 8d45885..f4aa01e 100644 --- a/alerter/src/main/java/com/tapadoo/alerter/Alert.kt +++ b/alerter/src/main/java/com/tapadoo/alerter/Alert.kt @@ -11,6 +11,7 @@ import android.text.TextUtils import android.util.AttributeSet import android.util.Log import android.view.* +import android.view.animation.AccelerateInterpolator import android.view.animation.Animation import android.view.animation.AnimationUtils import android.widget.Button @@ -52,6 +53,7 @@ class Alert @JvmOverloads constructor(context: Context, private var enableIconPulse = true private var enableInfiniteDuration: Boolean = false private var enableProgress: Boolean = false + private var enableOverlay = false private var runningAnimation: Runnable? = null @@ -239,6 +241,15 @@ class Alert @JvmOverloads constructor(context: Context, } else { flIconContainer?.visibility = View.GONE } + + if (enableOverlay) { + overlayView.visibility = View.VISIBLE + overlayView.animate().alpha(1f) + .setDuration(ALERT_OVERLAY_FADE_IN_DURATION) + .setInterpolator(AccelerateInterpolator()) + } else { + overlayView.visibility = View.GONE + } } } @@ -269,6 +280,12 @@ class Alert @JvmOverloads constructor(context: Context, */ private fun hide() { try { + if (enableOverlay) { + overlayView.animate().alpha(0f) + .setDuration(ALERT_OVERLAY_FADE_OUT_DURATION) + .setInterpolator(AccelerateInterpolator()) + } + exitAnimation.setAnimationListener(object : Animation.AnimationListener { override fun onAnimationStart(animation: Animation) { llAlertBackground?.setOnClickListener(null) @@ -656,6 +673,24 @@ class Alert @JvmOverloads constructor(context: Context, } } + /** + * Enable or disable overlay background + * + * @param True to enable, False to disable + * */ + fun enableOverlay(enable: Boolean) { + this.enableOverlay = enable + } + + /** + * Set the Overlay background color from a color resource + * + * @param color The color resource + * */ + fun setOverlayBackgroundColor(@ColorInt color: Int) { + overlayView.setBackgroundColor(color) + } + override fun canDismiss(): Boolean { return isDismissible } @@ -681,5 +716,7 @@ class Alert @JvmOverloads constructor(context: Context, */ private const val DISPLAY_TIME_IN_SECONDS: Long = 3000 private const val MUL = -0x1000000 + private const val ALERT_OVERLAY_FADE_IN_DURATION: Long = 700 + private const val ALERT_OVERLAY_FADE_OUT_DURATION: Long = 300 } } diff --git a/alerter/src/main/java/com/tapadoo/alerter/Alerter.kt b/alerter/src/main/java/com/tapadoo/alerter/Alerter.kt index a658c6f..25b4b67 100644 --- a/alerter/src/main/java/com/tapadoo/alerter/Alerter.kt +++ b/alerter/src/main/java/com/tapadoo/alerter/Alerter.kt @@ -583,6 +583,31 @@ class Alerter private constructor() { activityWeakReference = WeakReference(activity) } + + /** + * Set the overlay background color from a color resource + * + * @param color The color resource + * @return This Alerter + */ + fun setOverlayBackground(@ColorRes colorResId: Int): Alerter { + activityWeakReference?.get()?.let { + alert?.setOverlayBackgroundColor(ContextCompat.getColor(it, colorResId)) + } + return this + } + + /** + * Enable or disable overlay background + * + * @param enable True to enable, False to disable + * @return This Alerter + */ + fun enableOverlay(enable: Boolean): Alerter { + alert?.enableOverlay(enable) + return this + } + companion object { private var activityWeakReference: WeakReference? = null diff --git a/alerter/src/main/res/layout/alerter_alert_view.xml b/alerter/src/main/res/layout/alerter_alert_view.xml index fd9b30a..a6b3171 100644 --- a/alerter/src/main/res/layout/alerter_alert_view.xml +++ b/alerter/src/main/res/layout/alerter_alert_view.xml @@ -7,6 +7,16 @@ android:background="@android:color/transparent" android:clickable="false"> + + #F44336 @android:color/white @android:color/white + #4D000000 \ No newline at end of file diff --git a/app/src/main/java/com/tapadoo/alerter/demo/JavaDemoActivity.java b/app/src/main/java/com/tapadoo/alerter/demo/JavaDemoActivity.java index d7f0f9c..6057e4b 100644 --- a/app/src/main/java/com/tapadoo/alerter/demo/JavaDemoActivity.java +++ b/app/src/main/java/com/tapadoo/alerter/demo/JavaDemoActivity.java @@ -2,6 +2,7 @@ import android.graphics.Typeface; import android.os.Bundle; + import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; @@ -41,6 +42,7 @@ protected void onCreate(Bundle savedInstanceState) { findViewById(com.tapadoo.alerter.demo.R.id.btnAlertWithCustomFont).setOnClickListener(this); findViewById(com.tapadoo.alerter.demo.R.id.btnAlertSwipeToDismissEnabled).setOnClickListener(this); findViewById(com.tapadoo.alerter.demo.R.id.btnAlertSound).setOnClickListener(this); + findViewById(com.tapadoo.alerter.demo.R.id.btnShowAlertWithOverlay).setOnClickListener(this); } @Override @@ -73,12 +75,14 @@ public void onClick(View view) { showAlertWithCustomFont(); } else if (i == com.tapadoo.alerter.demo.R.id.btnAlertSwipeToDismissEnabled) { showAlertSwipeToDismissEnabled(); - } else if (i == com.tapadoo.alerter.demo.R.id.btnAlertSound){ + } else if (i == com.tapadoo.alerter.demo.R.id.btnAlertSound) { showAlertSound(); - }else if (i == com.tapadoo.alerter.demo.R.id.btnCenterAlert){ + } else if (i == com.tapadoo.alerter.demo.R.id.btnCenterAlert) { showAlertFromCenter(); - }else if (i == com.tapadoo.alerter.demo.R.id.btnBottomAlert){ + } else if (i == com.tapadoo.alerter.demo.R.id.btnBottomAlert) { showAlertFromBottom(); + } else if (i == com.tapadoo.alerter.demo.R.id.btnShowAlertWithOverlay) { + showAlerterWithOverlay(); } else { showAlertDefault(); } @@ -132,12 +136,12 @@ private void showAlertVerbose() { Alerter.create(JavaDemoActivity.this) .setTitle("Alert Title") .setText("The alert scales to accommodate larger bodies of text. " + - "The alert scales to accommodate larger bodies of text. " + - "The alert scales to accommodate larger bodies of text.") + "The alert scales to accommodate larger bodies of text. " + + "The alert scales to accommodate larger bodies of text.") .show(); } - private void showAlertCallbacks(){ + private void showAlertCallbacks() { Alerter.create(JavaDemoActivity.this) .setTitle("Alert Title") .setText("Alert text...") @@ -245,4 +249,14 @@ private void showAlertFromBottom() { .setLayoutGravity(Gravity.BOTTOM) .show(); } + + private void showAlerterWithOverlay() { + Alerter.create(JavaDemoActivity.this) + .setTitle("Alert Title") + .setText("Alert text...") + .enableOverlay(true) + .setOverlayBackground(R.color.alert_overlay_color) + .setBackgroundColorRes(com.tapadoo.alerter.demo.R.color.colorAccent) + .show(); + } } diff --git a/app/src/main/java/com/tapadoo/alerter/demo/KotlinDemoActivity.kt b/app/src/main/java/com/tapadoo/alerter/demo/KotlinDemoActivity.kt index e1fb475..e21c0f7 100644 --- a/app/src/main/java/com/tapadoo/alerter/demo/KotlinDemoActivity.kt +++ b/app/src/main/java/com/tapadoo/alerter/demo/KotlinDemoActivity.kt @@ -191,6 +191,16 @@ class KotlinDemoActivity : AppCompatActivity() { .show() } + private fun showAlerterWithOverlay() { + Alerter.create(this) + .setTitle("Alert Title") + .setText("Alert text...") + .enableOverlay(true) + .setOverlayBackground(R.color.alert_overlay_color) + .setBackgroundColorRes(R.color.colorAccent) + .show() + } + private fun setupOnClickListeners() { btnAlertDefault.setOnClickListener { showAlertDefault() @@ -259,5 +269,9 @@ class KotlinDemoActivity : AppCompatActivity() { btnBottomAlert.setOnClickListener { showAlertFromBottom() } + + btnShowAlertWithOverlay.setOnClickListener { + showAlerterWithOverlay() + } } } diff --git a/app/src/main/res/layout/content_example.xml b/app/src/main/res/layout/content_example.xml index 0bc473d..2d9d8c7 100644 --- a/app/src/main/res/layout/content_example.xml +++ b/app/src/main/res/layout/content_example.xml @@ -142,6 +142,12 @@ android:text="@string/default_bottom_alert" android:textColor="@android:color/white" /> + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 4919246..f785047 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -3,4 +3,5 @@ #63C9D7 #2c9cac #F99143 + #80000000 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index deaaaae..4d15eae 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,4 +19,5 @@ With Custom Layout Default Bottom Alert Default Center Alert + With overlay