summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Matthew Ng <ngmatthew@google.com> 2018-05-03 12:51:43 -0700
committer Matthew Ng <ngmatthew@google.com> 2018-05-04 11:25:53 -0700
commit1e14e961676cd79f1e3013380eadce2a4b00a9e0 (patch)
tree277ee0803fe5a683ba299e2d1a691125b4b9d30d
parent04e1f8e6914a2e4e14d36254ce71b97ebb2fc64d (diff)
Allow gestures to executed started from deadzone on nav bar
Set slippery to true when gesture starts from deadzone and when finished set slippery to its correct state. Change-Id: I035d12f9639ce4af00db9e0d25b514f074b5198c Fixes: 78886558 Test: swipe up from deadzone on nav bar (just above home button)
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java27
1 files changed, 23 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 6cc96da96e45..2fac13641405 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -124,6 +124,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
private GestureHelper mGestureHelper;
private final DeadZone mDeadZone;
+ private boolean mDeadZoneConsuming = false;
private final NavigationBarTransitions mBarTransitions;
private final OverviewProxyService mOverviewProxyService;
@@ -291,8 +292,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
- if (mDeadZone.onTouchEvent(event)) {
- // Consumed the touch event
+ if (shouldDeadZoneConsumeTouchEvents(event)) {
return true;
}
switch (event.getActionMasked()) {
@@ -314,8 +314,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
@Override
public boolean onTouchEvent(MotionEvent event) {
- if (mDeadZone.onTouchEvent(event)) {
- // Consumed the touch event
+ if (shouldDeadZoneConsumeTouchEvents(event)) {
return true;
}
if (mGestureHelper.onTouchEvent(event)) {
@@ -324,6 +323,26 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
return super.onTouchEvent(event);
}
+ private boolean shouldDeadZoneConsumeTouchEvents(MotionEvent event) {
+ if (mDeadZone.onTouchEvent(event) || mDeadZoneConsuming) {
+ switch (event.getActionMasked()) {
+ case MotionEvent.ACTION_DOWN:
+ // Allow gestures starting in the deadzone to be slippery
+ setSlippery(true);
+ mDeadZoneConsuming = true;
+ break;
+ case MotionEvent.ACTION_CANCEL:
+ case MotionEvent.ACTION_UP:
+ // When a gesture started in the deadzone is finished, restore slippery state
+ updateSlippery();
+ mDeadZoneConsuming = false;
+ break;
+ }
+ return true;
+ }
+ return false;
+ }
+
public @NavigationBarCompat.HitTarget int getDownHitTarget() {
return mDownHitTarget;
}