diff options
| author | Oliver Scott <olivercscott@gmail.com> | 2020-12-30 16:02:20 -0500 |
|---|---|---|
| committer | Ali B <abittin@gmail.com> | 2021-06-07 10:59:12 +0300 |
| commit | 6bd6ccf6c28323f28ca3b1ec7009a98c15b73836 (patch) | |
| tree | c64f629f2e9503bae7d6b1769453e44353d3138d | |
| parent | 98cac140d0e1a2eb92656f07a00c23bee959b7ac (diff) | |
Add gesture to skip setup wizard
Change-Id: I91226946103dd7c8f9076ed8e026bceee498a458
| -rw-r--r-- | src/com/aicp/setupwizard/WelcomeActivity.java | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/src/com/aicp/setupwizard/WelcomeActivity.java b/src/com/aicp/setupwizard/WelcomeActivity.java index dda2f95..4f3122c 100644 --- a/src/com/aicp/setupwizard/WelcomeActivity.java +++ b/src/com/aicp/setupwizard/WelcomeActivity.java @@ -17,11 +17,16 @@ package com.aicp.setupwizard; +import android.graphics.Rect; import android.os.Bundle; +import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import com.aicp.setupwizard.util.EnableAccessibilityController; +import com.aicp.setupwizard.util.SetupWizardUtils; + +import java.util.concurrent.TimeUnit; public class WelcomeActivity extends BaseSetupWizardActivity { @@ -29,6 +34,9 @@ public class WelcomeActivity extends BaseSetupWizardActivity { private View mRootView; private EnableAccessibilityController mEnableAccessibilityController; + private GestureDetector mGestureDetector; + private MotionEvent previousTapEvent; + private int consecutiveTaps; @Override protected void onCreate(Bundle savedInstanceState) { @@ -39,13 +47,50 @@ public class WelcomeActivity extends BaseSetupWizardActivity { setBackDrawable(null); mEnableAccessibilityController = EnableAccessibilityController.getInstance(getApplicationContext()); + mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { + @Override + public boolean onDown(MotionEvent e) { + return true; + } + + @Override + public boolean onSingleTapUp(MotionEvent e) { + Rect viewRect = new Rect(); + int[] leftTop = new int[2]; + mRootView.getLocationOnScreen(leftTop); + viewRect.set( + leftTop[0], leftTop[1], leftTop[0] + mRootView.getWidth(), leftTop[1] + + mRootView.getHeight()); + if (viewRect.contains((int) e.getX(), (int) e.getY())) { + if (isConsecutiveTap(e)) { + consecutiveTaps++; + } else { + consecutiveTaps = 1; + } + if (consecutiveTaps == 4) { + SetupWizardUtils.finishSetupWizard(WelcomeActivity.this); + } + } else { + // Touch outside the target view. Reset counter. + consecutiveTaps = 0; + } + + if (previousTapEvent != null) { + previousTapEvent.recycle(); + } + previousTapEvent = MotionEvent.obtain(e); + return false; + } + }); mRootView.setOnTouchListener((v, event) -> mEnableAccessibilityController.onTouchEvent(event)); - + mRootView.setOnTouchListener((v, event) -> + mGestureDetector.onTouchEvent(event)); } @Override - public void onBackPressed() {} + public void onBackPressed() { + } @Override public void onNavigateBack() { @@ -56,4 +101,17 @@ public class WelcomeActivity extends BaseSetupWizardActivity { protected int getLayoutResId() { return R.layout.welcome_activity; } + + private boolean isConsecutiveTap(MotionEvent currentTapEvent) { + if (previousTapEvent == null) { + return false; + } + + double deltaX = previousTapEvent.getX() - currentTapEvent.getX(); + double deltaY = previousTapEvent.getY() - currentTapEvent.getY(); + long deltaTime = currentTapEvent.getEventTime() - previousTapEvent.getEventTime(); + return (deltaX * deltaX + deltaY * deltaY >= + (mRootView.getWidth() * mRootView.getWidth()) / 2 + && deltaTime < TimeUnit.SECONDS.toMillis(1)); + } } |
