diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarEdgePanel.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarEdgePanel.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarEdgePanel.java index af442d30011e..64209a7b9e73 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarEdgePanel.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarEdgePanel.java @@ -114,7 +114,7 @@ public class NavigationBarEdgePanel extends View { lp.accessibilityTitle = context.getString(R.string.nav_bar_edge_panel); lp.windowAnimations = 0; NavigationBarEdgePanel panel = new NavigationBarEdgePanel( - context, (gravity & Gravity.LEFT) != 0); + context, (gravity & Gravity.LEFT) == Gravity.LEFT); panel.setLayoutParams(lp); return panel; } @@ -269,12 +269,21 @@ public class NavigationBarEdgePanel extends View { dist)); if (dist < mGestureLength) { - setLegProgress(MathUtils.constrainedMap( + float calculatedLegProgress = MathUtils.constrainedMap( 0f, POINTEDNESS_BEFORE_SNAP_RATIO, mGestureLength * START_POINTING_RATIO, mGestureLength, - dist)); + dist); - mGestureDetected = false; + // Blend animated value with drag calculated value, allow the gesture to continue + // while the animation is playing with jump cuts in the animation. + setLegProgress(MathUtils.lerp(calculatedLegProgress, mLegProgress, mDragProgress)); + + if (mGestureDetected) { + mGestureDetected = false; + + mLegAnimator.setFloatValues(POINTEDNESS_BEFORE_SNAP_RATIO); + mLegAnimator.start(); + } } else { if (!mGestureDetected) { performHapticFeedback(HapticFeedbackConstants.CLOCK_TICK); |