From 1b8ff670efe413ce2a374f54526a528e4c5e5b5f Mon Sep 17 00:00:00 2001 From: Suphon Thanakornpakapong Date: Wed, 11 May 2022 10:51:48 +0700 Subject: [PATCH] Clip child when drawing stretch effect --- lawnchair/src/app/lawnchair/ui/StretchRecyclerViewContainer.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lawnchair/src/app/lawnchair/ui/StretchRecyclerViewContainer.kt b/lawnchair/src/app/lawnchair/ui/StretchRecyclerViewContainer.kt index 8881e70736..2f9b87bdab 100644 --- a/lawnchair/src/app/lawnchair/ui/StretchRecyclerViewContainer.kt +++ b/lawnchair/src/app/lawnchair/ui/StretchRecyclerViewContainer.kt @@ -6,6 +6,7 @@ import android.util.AttributeSet import android.view.View import android.widget.EdgeEffect import androidx.recyclerview.widget.RecyclerView +import com.android.launcher3.R import com.android.launcher3.Utilities import com.android.launcher3.workprofile.PersonalWorkPagedView @@ -14,6 +15,7 @@ open class StretchRecyclerViewContainer @JvmOverloads constructor( ) : StretchRelativeLayout(context, attrs, defStyleAttr) { private val childEffect = StretchEdgeEffect(context, { invalidate() }, { postInvalidateOnAnimation() }) + private val verticalOffset = resources.getDimensionPixelSize(R.dimen.all_apps_search_vertical_offset) override fun drawChild(canvas: Canvas, child: View, drawingTime: Long): Boolean { if (Utilities.ATLEAST_S || (child !is RecyclerView && child !is PersonalWorkPagedView)) { @@ -22,6 +24,7 @@ open class StretchRecyclerViewContainer @JvmOverloads constructor( if (!childEffect.isFinished) { val save = canvas.save() + canvas.clipRect(child.left, child.top + verticalOffset, child.right, child.bottom) childEffect.setSize(width, height) childEffect.applyStretch(canvas, StretchEdgeEffect.POSITION_BOTTOM) val result = super.drawChild(canvas, child, drawingTime)