diff options
| author | 2018-05-03 12:51:43 -0700 | |
|---|---|---|
| committer | 2018-05-04 11:25:53 -0700 | |
| commit | 1e14e961676cd79f1e3013380eadce2a4b00a9e0 (patch) | |
| tree | 277ee0803fe5a683ba299e2d1a691125b4b9d30d | |
| parent | 04e1f8e6914a2e4e14d36254ce71b97ebb2fc64d (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.java | 27 |
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; } |