diff options
| author | 2020-05-13 16:21:21 +0000 | |
|---|---|---|
| committer | 2020-05-13 16:21:21 +0000 | |
| commit | 1daf6ea6a39c1bd56a5792ab6cd8469aba0a441b (patch) | |
| tree | 8fbbe923300deae51e8b7f4e9c37c6df8a918ad0 | |
| parent | c9ffc840f5e5ef6a2af3757d3dfab0a1e774b9b1 (diff) | |
| parent | 545f25077eeb6089142c0f25001c6e18ec50e7cd (diff) | |
Merge "Add try/catch to prevent NPE in PagedTileLayout" into rvc-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java index b157f4b3c5ed..aaff9ac47ebf 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java @@ -152,15 +152,33 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { } @Override + public void fakeDragBy(float xOffset) { + try { + super.fakeDragBy(xOffset); + // Keep on drawing until the animation has finished. + postInvalidateOnAnimation(); + } catch (NullPointerException e) { + Log.e(TAG, "FakeDragBy called before begin", e); + // If we were trying to fake drag, it means we just added a new tile to the last + // page, so animate there. + final int lastPageNumber = mPages.size() - 1; + post(() -> { + setCurrentItem(lastPageNumber, true); + if (mBounceAnimatorSet != null) { + mBounceAnimatorSet.start(); + } + setOffscreenPageLimit(1); + }); + } + } + + @Override public void computeScroll() { if (!mScroller.isFinished() && mScroller.computeScrollOffset()) { if (!isFakeDragging()) { beginFakeDrag(); } fakeDragBy(getScrollX() - mScroller.getCurrX()); - // Keep on drawing until the animation has finished. - postInvalidateOnAnimation(); - return; } else if (isFakeDragging()) { endFakeDrag(); mBounceAnimatorSet.start(); |