diff options
5 files changed, 35 insertions, 22 deletions
diff --git a/src/com/android/launcher3/FastBitmapDrawable.java b/src/com/android/launcher3/FastBitmapDrawable.java index 7eaae5a44..270d53939 100644 --- a/src/com/android/launcher3/FastBitmapDrawable.java +++ b/src/com/android/launcher3/FastBitmapDrawable.java @@ -364,7 +364,6 @@ public class FastBitmapDrawable extends Drawable { private AnimatorSet cancelAnimator(AnimatorSet animator) { if (animator != null) { - animator.removeAllListeners(); animator.cancel(); } return null; diff --git a/src/com/android/launcher3/PinchAnimationManager.java b/src/com/android/launcher3/PinchAnimationManager.java index c1d60fd02..41074bea0 100644 --- a/src/com/android/launcher3/PinchAnimationManager.java +++ b/src/com/android/launcher3/PinchAnimationManager.java @@ -215,9 +215,18 @@ public class PinchAnimationManager { view.setVisibility(View.VISIBLE); } else { animator.addListener(new AnimatorListenerAdapter() { + private boolean mCancelled = false; + + @Override + public void onAnimationCancel(Animator animation) { + mCancelled = true; + } + @Override public void onAnimationEnd(Animator animation) { - view.setVisibility(View.INVISIBLE); + if (!mCancelled) { + view.setVisibility(View.INVISIBLE); + } } }); } @@ -226,7 +235,6 @@ public class PinchAnimationManager { private void startAnimator(int index, Animator animator, long duration) { if (mAnimators[index] != null) { - mAnimators[index].removeAllListeners(); mAnimators[index].cancel(); } mAnimators[index] = animator; diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java index 1f36468a7..6a71befe4 100644 --- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java +++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java @@ -356,7 +356,8 @@ public class WorkspaceStateTransitionAnimation { cl.setShortcutAndWidgetAlpha(finalAlpha); } - if (Workspace.isQsbContainerPage(i)) { + if (Workspace.isQsbContainerPage(i) && + states.stateIsNormal && mWorkspaceFadeInAdjacentScreens) { if (animated) { Animator anim = mWorkspace.mQsbAlphaController .animateAlphaAtIndex(finalAlpha, Workspace.QSB_ALPHA_INDEX_PAGE_SCROLL); @@ -372,8 +373,6 @@ public class WorkspaceStateTransitionAnimation { final ViewGroup overviewPanel = mLauncher.getOverviewPanel(); - final View qsbContainer = mLauncher.getQsbContainer(); - Animator qsbAlphaAnimation = mWorkspace.mQsbAlphaController .animateAlphaAtIndex(finalQsbAlpha, Workspace.QSB_ALPHA_INDEX_STATE_CHANGE); @@ -395,7 +394,7 @@ public class WorkspaceStateTransitionAnimation { // For animation optimization, we may need to provide the Launcher transition // with a set of views on which to force build and manage layers in certain scenarios. layerViews.addView(overviewPanel); - layerViews.addView(qsbContainer); + layerViews.addView(mLauncher.getQsbContainer()); layerViews.addView(mLauncher.getHotseat()); layerViews.addView(mWorkspace.getPageIndicator()); diff --git a/src/com/android/launcher3/allapps/AllAppsBackgroundDrawable.java b/src/com/android/launcher3/allapps/AllAppsBackgroundDrawable.java index cfd07e658..bc602f37b 100644 --- a/src/com/android/launcher3/allapps/AllAppsBackgroundDrawable.java +++ b/src/com/android/launcher3/allapps/AllAppsBackgroundDrawable.java @@ -188,7 +188,6 @@ public class AllAppsBackgroundDrawable extends Drawable { private ObjectAnimator cancelAnimator(ObjectAnimator animator) { if (animator != null) { - animator.removeAllListeners(); animator.cancel(); } return null; diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java index 12a67014d..4f5edc94f 100644 --- a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java +++ b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java @@ -72,18 +72,6 @@ public class PageIndicatorDots extends PageIndicator { } }; - /** - * Listener for keep running the animation until the final state is reached. - */ - private final AnimatorListenerAdapter mAnimCycleListener = new AnimatorListenerAdapter() { - - @Override - public void onAnimationEnd(Animator animation) { - mAnimator = null; - animateToPosition(mFinalPosition); - } - }; - private final Paint mCirclePaint; private final float mDotRadius; private final int mActiveColor; @@ -163,7 +151,7 @@ public class PageIndicatorDots extends PageIndicator { float positionForThisAnim = mCurrentPosition > mFinalPosition ? mCurrentPosition - SHIFT_PER_ANIMATION : mCurrentPosition + SHIFT_PER_ANIMATION; mAnimator = ObjectAnimator.ofFloat(this, CURRENT_POSITION, positionForThisAnim); - mAnimator.addListener(mAnimCycleListener); + mAnimator.addListener(new AnimationCycleListener()); mAnimator.setDuration(ANIMATION_DURATION); mAnimator.start(); } @@ -171,7 +159,6 @@ public class PageIndicatorDots extends PageIndicator { public void stopAllAnimations() { if (mAnimator != null) { - mAnimator.removeAllListeners(); mAnimator.cancel(); mAnimator = null; } @@ -326,4 +313,25 @@ public class PageIndicatorDots extends PageIndicator { } } } + + /** + * Listener for keep running the animation until the final state is reached. + */ + private class AnimationCycleListener extends AnimatorListenerAdapter { + + private boolean mCancelled = false; + + @Override + public void onAnimationCancel(Animator animation) { + mCancelled = true; + } + + @Override + public void onAnimationEnd(Animator animation) { + if (!mCancelled) { + mAnimator = null; + animateToPosition(mFinalPosition); + } + } + } } |