From ac64a03cca261dfcc8ecf321ec52be445126cb03 Mon Sep 17 00:00:00 2001 From: Gavriil Sitnikov Date: Thu, 23 Jun 2016 14:23:32 +0300 Subject: [PATCH] ripple click listener fix --- .../navigation/activities/BaseActivity.java | 22 +++++++++++++++++++ .../roboswag/components/utils/UiUtils.java | 8 +++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java b/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java index 54a20bf..4c6a405 100644 --- a/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java +++ b/src/main/java/ru/touchin/roboswag/components/navigation/activities/BaseActivity.java @@ -47,6 +47,16 @@ public abstract class BaseActivity extends AppCompatActivity private final ArrayList onBackPressedListeners = new ArrayList<>(); @NonNull private final BaseUiBindable baseUiBindable = new BaseUiBindable(); + private boolean resumed; + + /** + * Returns if activity resumed. + * + * @return True if resumed. + */ + public boolean isResumed() { + return resumed; + } @Override protected void onCreate(@Nullable final Bundle savedInstanceState) { @@ -60,6 +70,18 @@ public abstract class BaseActivity extends AppCompatActivity baseUiBindable.onStart(); } + @Override + protected void onResume() { + super.onResume(); + resumed = true; + } + + @Override + protected void onPause() { + resumed = false; + super.onPause(); + } + @Override protected void onStop() { baseUiBindable.onStop(); diff --git a/src/main/java/ru/touchin/roboswag/components/utils/UiUtils.java b/src/main/java/ru/touchin/roboswag/components/utils/UiUtils.java index 2df193d..8ae08c1 100644 --- a/src/main/java/ru/touchin/roboswag/components/utils/UiUtils.java +++ b/src/main/java/ru/touchin/roboswag/components/utils/UiUtils.java @@ -43,6 +43,7 @@ import android.view.ViewGroup; import java.util.concurrent.atomic.AtomicInteger; +import ru.touchin.roboswag.components.navigation.activities.BaseActivity; import rx.functions.Action0; /** @@ -130,9 +131,12 @@ public final class UiUtils { } final Runnable runnable = () -> { - if (targetView.getWindowVisibility() == View.VISIBLE) { - onClickListener.onClick(targetView); + if (targetView.getWindowVisibility() != View.VISIBLE + || !targetView.hasWindowFocus() + || (targetView.getContext() instanceof BaseActivity && !((BaseActivity) targetView.getContext()).isResumed())) { + return; } + onClickListener.onClick(targetView); }; targetView.setOnClickListener(v -> {