From 2b073be65475903c022df3e27181ef96e4b0dff7 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Mon, 7 Nov 2016 15:47:53 -0800 Subject: [PATCH] Fix bug where AllApps shadows weren't being completely clipped. Worked fine in normal launcher conditions, but surfaced when using AllApps in multi-window mode. Bug: 32176631 Change-Id: Ic973f707a69dd5d8c5eafa0dc2d154aa6ab0e001 --- .../launcher3/allapps/HeaderElevationController.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/com/android/launcher3/allapps/HeaderElevationController.java b/src/com/android/launcher3/allapps/HeaderElevationController.java index ce9837c391..7941ac5c4d 100644 --- a/src/com/android/launcher3/allapps/HeaderElevationController.java +++ b/src/com/android/launcher3/allapps/HeaderElevationController.java @@ -7,6 +7,7 @@ import android.graphics.Rect; import android.graphics.drawable.GradientDrawable; import android.os.Build; import android.support.v7.widget.RecyclerView; +import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; import android.view.ViewOutlineProvider; @@ -14,6 +15,7 @@ import android.widget.FrameLayout; import com.android.launcher3.BaseRecyclerView; import com.android.launcher3.R; +import com.android.launcher3.Utilities; /** * Helper class for controlling the header elevation in response to RecyclerView scroll. @@ -96,16 +98,16 @@ public abstract class HeaderElevationController extends RecyclerView.OnScrollLis public void getOutline(View view, Outline outline) { final View parent = (View) mHeader.getParent(); + DisplayMetrics metrics = new DisplayMetrics(); + view.getDisplay().getMetrics(metrics); + int offset = Utilities.pxFromDp(mMaxElevation, metrics); + final int left = parent.getLeft(); // Use the parent to account for offsets final int top = view.getTop(); final int right = left + view.getWidth(); final int bottom = view.getBottom(); - outline.setRect( - left - (int) mMaxElevation, - top - (int) mMaxElevation, - right + (int) mMaxElevation, - bottom); + outline.setRect(left - offset, top - offset, right + offset, bottom); } }; mHeader.setOutlineProvider(vop);