diff options
author | Alan Viverette <alanv@google.com> | 2014-12-12 13:38:10 -0800 |
---|---|---|
committer | Alan Viverette <alanv@google.com> | 2014-12-12 13:38:10 -0800 |
commit | 9bc11ac168d63900589158074028e6c480579421 (patch) | |
tree | edbb8a35d47546cf61af4a6f5186098fd18a46d5 /graphics | |
parent | 4357d4eabc375c392190cf2d1dfc3aeba9718ceb (diff) | |
download | frameworks_base-9bc11ac168d63900589158074028e6c480579421.zip frameworks_base-9bc11ac168d63900589158074028e6c480579421.tar.gz frameworks_base-9bc11ac168d63900589158074028e6c480579421.tar.bz2 |
Move ripple to end state on jump when hardware exit is pending
BUG: 18734676
Change-Id: Ie063e1eec0b4f28f936ea27822afacfd1b72a0e9
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/java/android/graphics/drawable/Ripple.java | 25 | ||||
-rw-r--r-- | graphics/java/android/graphics/drawable/RippleBackground.java | 22 |
2 files changed, 37 insertions, 10 deletions
diff --git a/graphics/java/android/graphics/drawable/Ripple.java b/graphics/java/android/graphics/drawable/Ripple.java index a3a220c..ba1e86c 100644 --- a/graphics/java/android/graphics/drawable/Ripple.java +++ b/graphics/java/android/graphics/drawable/Ripple.java @@ -214,7 +214,7 @@ class Ripple { final boolean canUseHardware = c.isHardwareAccelerated(); if (mCanUseHardware != canUseHardware && mCanUseHardware) { // We've switched from hardware to non-hardware mode. Panic. - cancelHardwareAnimations(true); + cancelHardwareAnimations(false); } mCanUseHardware = canUseHardware; @@ -493,7 +493,7 @@ class Ripple { public void cancel() { mCanceled = true; cancelSoftwareAnimations(); - cancelHardwareAnimations(true); + cancelHardwareAnimations(false); mCanceled = false; } @@ -522,15 +522,30 @@ class Ripple { /** * Cancels any running hardware animations. */ - private void cancelHardwareAnimations(boolean cancelPending) { + private void cancelHardwareAnimations(boolean jumpToEnd) { final ArrayList<RenderNodeAnimator> runningAnimations = mRunningAnimations; final int N = runningAnimations.size(); for (int i = 0; i < N; i++) { - runningAnimations.get(i).cancel(); + if (jumpToEnd) { + runningAnimations.get(i).end(); + } else { + runningAnimations.get(i).cancel(); + } } runningAnimations.clear(); - mHasPendingHardwareExit = false; + if (mHasPendingHardwareExit) { + // If we had a pending hardware exit, jump to the end state. + mHasPendingHardwareExit = false; + + if (jumpToEnd) { + mOpacity = 0; + mTweenX = 1; + mTweenY = 1; + mTweenRadius = 1; + } + } + mHardwareAnimating = false; } diff --git a/graphics/java/android/graphics/drawable/RippleBackground.java b/graphics/java/android/graphics/drawable/RippleBackground.java index 665d736..cc42aac 100644 --- a/graphics/java/android/graphics/drawable/RippleBackground.java +++ b/graphics/java/android/graphics/drawable/RippleBackground.java @@ -148,7 +148,7 @@ class RippleBackground { final boolean canUseHardware = c.isHardwareAccelerated(); if (mCanUseHardware != canUseHardware && mCanUseHardware) { // We've switched from hardware to non-hardware mode. Panic. - cancelHardwareAnimations(true); + cancelHardwareAnimations(false); } mCanUseHardware = canUseHardware; @@ -399,7 +399,7 @@ class RippleBackground { */ public void cancel() { cancelSoftwareAnimations(); - cancelHardwareAnimations(true); + cancelHardwareAnimations(false); } private void cancelSoftwareAnimations() { @@ -412,15 +412,27 @@ class RippleBackground { /** * Cancels any running hardware animations. */ - private void cancelHardwareAnimations(boolean cancelPending) { + private void cancelHardwareAnimations(boolean jumpToEnd) { final ArrayList<RenderNodeAnimator> runningAnimations = mRunningAnimations; final int N = runningAnimations.size(); for (int i = 0; i < N; i++) { - runningAnimations.get(i).cancel(); + if (jumpToEnd) { + runningAnimations.get(i).end(); + } else { + runningAnimations.get(i).cancel(); + } } runningAnimations.clear(); - mHasPendingHardwareExit = false; + if (mHasPendingHardwareExit) { + // If we had a pending hardware exit, jump to the end state. + mHasPendingHardwareExit = false; + + if (jumpToEnd) { + mOuterOpacity = 0; + } + } + mHardwareAnimating = false; } |