diff options
author | Jon Miranda <jonmiranda@google.com> | 2018-06-14 15:57:59 -0700 |
---|---|---|
committer | Jon Miranda <jonmiranda@google.com> | 2018-06-15 09:26:57 -0700 |
commit | b8ca1aa7eeb15082331bc9eb47c09aacc6f82e5c (patch) | |
tree | ee19713f7764403724e600eab58e7f90304223a2 /src/com/android | |
parent | 4f8e417bca27c570e613dd088998216a14d8a3f3 (diff) | |
download | Launcher3-b8ca1aa7eeb15082331bc9eb47c09aacc6f82e5c.tar.gz |
Add hard clip for overscrolled children to not be visible above QSB.
We lose the RecyclerView fading edge, but this is the simplest/less risky
solution.
Change-Id: I7aa39a33678ed8a9b9cf9f17c9ad8c14707b0299
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/launcher3/allapps/AllAppsContainerView.java | 5 | ||||
-rw-r--r-- | src/com/android/launcher3/views/SpringRelativeLayout.java | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 8993978614..4d63c960a4 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -312,6 +312,11 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo } } + @Override + public int getCanvasClipTopForOverscroll() { + return mHeader.getTop(); + } + private void rebindAdapters(boolean showTabs) { rebindAdapters(showTabs, false /* force */); } diff --git a/src/com/android/launcher3/views/SpringRelativeLayout.java b/src/com/android/launcher3/views/SpringRelativeLayout.java index 5022d65a30..892c59f272 100644 --- a/src/com/android/launcher3/views/SpringRelativeLayout.java +++ b/src/com/android/launcher3/views/SpringRelativeLayout.java @@ -85,12 +85,24 @@ public class SpringRelativeLayout extends RelativeLayout { invalidate(); } + /** + * Used to clip the canvas when drawing child views during overscroll. + */ + public int getCanvasClipTopForOverscroll() { + return 0; + } + @Override protected boolean drawChild(Canvas canvas, View child, long drawingTime) { if (mDampedScrollShift != 0 && mSpringViews.get(child.getId())) { + int saveCount = canvas.save(); + + canvas.clipRect(0, getCanvasClipTopForOverscroll(), getWidth(), getHeight()); canvas.translate(0, mDampedScrollShift); boolean result = super.drawChild(canvas, child, drawingTime); - canvas.translate(0, -mDampedScrollShift); + + canvas.restoreToCount(saveCount); + return result; } return super.drawChild(canvas, child, drawingTime); |