diff options
author | Peter Schiller <peterschiller@google.com> | 2016-06-27 16:15:30 -0700 |
---|---|---|
committer | Peter Schiller <peterschiller@google.com> | 2016-06-27 18:59:32 -0700 |
commit | cbea0862846a9f5d999111e66c162e2349b6be26 (patch) | |
tree | e19a023b9fe43618b9d2b9cdc01b27d9ed2af71e /src/com/android/launcher3/allapps/HeaderElevationController.java | |
parent | 1b65c6e97cfc859093a81dd0a84fa69c86aa56a3 (diff) | |
download | android_packages_apps_Trebuchet-cbea0862846a9f5d999111e66c162e2349b6be26.tar.gz android_packages_apps_Trebuchet-cbea0862846a9f5d999111e66c162e2349b6be26.tar.bz2 android_packages_apps_Trebuchet-cbea0862846a9f5d999111e66c162e2349b6be26.zip |
All Apps header shadow is drawn incorrectly
Bug: 29777304
Change-Id: I9ead05b28d1d57dd6a157126637296a97e3f7058
Diffstat (limited to 'src/com/android/launcher3/allapps/HeaderElevationController.java')
-rw-r--r-- | src/com/android/launcher3/allapps/HeaderElevationController.java | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/com/android/launcher3/allapps/HeaderElevationController.java b/src/com/android/launcher3/allapps/HeaderElevationController.java index 07f583caa..e8f74eb5e 100644 --- a/src/com/android/launcher3/allapps/HeaderElevationController.java +++ b/src/com/android/launcher3/allapps/HeaderElevationController.java @@ -2,6 +2,7 @@ package com.android.launcher3.allapps; import android.annotation.TargetApi; import android.content.res.Resources; +import android.graphics.Outline; import android.graphics.Rect; import android.graphics.drawable.GradientDrawable; import android.os.Build; @@ -82,11 +83,31 @@ public abstract class HeaderElevationController extends RecyclerView.OnScrollLis public ControllerVL(View header) { mHeader = header; - mHeader.setOutlineProvider(ViewOutlineProvider.BOUNDS); - - Resources res = header.getContext().getResources(); + Resources res = mHeader.getContext().getResources(); mMaxElevation = res.getDimension(R.dimen.all_apps_header_max_elevation); mScrollToElevation = res.getDimension(R.dimen.all_apps_header_scroll_to_elevation); + + // We need to provide a custom outline so the shadow only appears on the bottom edge. + // The top, left and right edges are all extended out, and the shadow is clipped + // by the parent. + final ViewOutlineProvider vop = new ViewOutlineProvider() { + @Override + public void getOutline(View view, Outline outline) { + final View parent = (View) mHeader.getParent(); + + 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); + } + }; + mHeader.setOutlineProvider(vop); } @Override |