From 46a48cf0b0d815cf20e4ccf2e6846c20855ac637 Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Thu, 2 Aug 2018 13:12:39 +0000 Subject: [PATCH] Revert "Fix PagedTileLayout reveal animation crash." This reverts commit b3ed28c84d5572e585c9339ef311c772c62afe2f. Reason for revert: Change-Id: If1094b0ada1f664da60dc56e1e0f49f75e40adf5 --- .../android/systemui/qs/PagedTileLayout.java | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java index 91f1d3dcab4a2..f13f4899baed5 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java @@ -55,6 +55,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { private Scroller mScroller; private AnimatorSet mBounceAnimatorSet; + private int mAnimatingToPage = -1; private float mLastExpansion; public PagedTileLayout(Context context, AttributeSet attrs) { @@ -93,17 +94,41 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { } } + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + // Suppress all touch event during reveal animation. + if (mAnimatingToPage != -1) { + return true; + } + return super.onInterceptTouchEvent(ev); + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + // Suppress all touch event during reveal animation. + if (mAnimatingToPage != -1) { + return true; + } + return super.onTouchEvent(ev); + } + @Override public void computeScroll() { if (!mScroller.isFinished() && mScroller.computeScrollOffset()) { - fakeDragBy(getScrollX() - mScroller.getCurrX()); + scrollTo(mScroller.getCurrX(), mScroller.getCurrY()); + float pageFraction = (float) getScrollX() / getWidth(); + int position = (int) pageFraction; + float positionOffset = pageFraction - position; + mOnPageChangeListener.onPageScrolled(position, positionOffset, getScrollX()); // Keep on drawing until the animation has finished. postInvalidateOnAnimation(); return; - } else if (isFakeDragging()) { - endFakeDrag(); + } + if (mAnimatingToPage != -1) { + setCurrentItem(mAnimatingToPage, true); mBounceAnimatorSet.start(); setOffscreenPageLimit(1); + mAnimatingToPage = -1; } super.computeScroll(); } @@ -262,7 +287,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { } public void startTileReveal(Set tileSpecs, final Runnable postAnimation) { - if (tileSpecs.isEmpty() || mPages.size() < 2 || getScrollX() != 0 || !beginFakeDrag()) { + if (tileSpecs.isEmpty() || mPages.size() < 2 || getScrollX() != 0) { // Do not start the reveal animation unless there are tiles to animate, multiple // TilePages available and the user has not already started dragging. return; @@ -292,8 +317,9 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { postAnimation.run(); } }); - setOffscreenPageLimit(lastPageNumber); // Ensure the page to reveal has been inflated. - mScroller.startScroll(getScrollX(), getScrollY(), getWidth() * lastPageNumber, 0, + mAnimatingToPage = lastPageNumber; + setOffscreenPageLimit(mAnimatingToPage); // Ensure the page to reveal has been inflated. + mScroller.startScroll(getScrollX(), getScrollY(), getWidth() * mAnimatingToPage, 0, REVEAL_SCROLL_DURATION_MILLIS); postInvalidateOnAnimation(); }