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
This commit is contained in:
Jon Miranda
2018-06-14 15:57:59 -07:00
parent 4f8e417bca
commit b8ca1aa7ee
2 changed files with 18 additions and 1 deletions

View File

@@ -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 */);
}

View File

@@ -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);