summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-05-13 16:21:21 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-05-13 16:21:21 +0000
commit1daf6ea6a39c1bd56a5792ab6cd8469aba0a441b (patch)
tree8fbbe923300deae51e8b7f4e9c37c6df8a918ad0
parentc9ffc840f5e5ef6a2af3757d3dfab0a1e774b9b1 (diff)
parent545f25077eeb6089142c0f25001c6e18ec50e7cd (diff)
Merge "Add try/catch to prevent NPE in PagedTileLayout" into rvc-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java24
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();