summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Scott <olivercscott@gmail.com>2020-12-30 16:02:20 -0500
committerAli B <abittin@gmail.com>2021-06-07 10:59:12 +0300
commit6bd6ccf6c28323f28ca3b1ec7009a98c15b73836 (patch)
treec64f629f2e9503bae7d6b1769453e44353d3138d
parent98cac140d0e1a2eb92656f07a00c23bee959b7ac (diff)
Add gesture to skip setup wizard
Change-Id: I91226946103dd7c8f9076ed8e026bceee498a458
-rw-r--r--src/com/aicp/setupwizard/WelcomeActivity.java62
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));
+ }
}