Merge "Move ripple to end state on jump when hardware exit is pending" into lmp-mr1-dev

This commit is contained in:
Alan Viverette
2014-12-12 21:59:20 +00:00
committed by Android (Google) Code Review
2 changed files with 37 additions and 10 deletions

View File

@@ -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;
}

View File

@@ -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;
}