summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/allapps/HeaderElevationController.java
diff options
context:
space:
mode:
authorPeter Schiller <peterschiller@google.com>2016-06-27 16:15:30 -0700
committerPeter Schiller <peterschiller@google.com>2016-06-27 18:59:32 -0700
commitcbea0862846a9f5d999111e66c162e2349b6be26 (patch)
treee19a023b9fe43618b9d2b9cdc01b27d9ed2af71e /src/com/android/launcher3/allapps/HeaderElevationController.java
parent1b65c6e97cfc859093a81dd0a84fa69c86aa56a3 (diff)
downloadandroid_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.java27
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