Merge \"All Apps header shadow is drawn incorrectly\" into ub-launcher3-calgary

am: b43ed13d61

Change-Id: I61bbfb298c7392206be067afda7ce096df43f64f
This commit is contained in:
Peter Schiller
2016-06-28 22:12:39 +00:00
committed by android-build-merger
2 changed files with 34 additions and 3 deletions
@@ -459,6 +459,16 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
lp.leftMargin = bgPadding.left;
lp.rightMargin = bgPadding.right;
// Clip the view to the left and right edge of the background to
// to prevent shadows from rendering beyond the edges
final Rect newClipBounds = new Rect(
bgPadding.left,
0,
getWidth() - bgPadding.right,
getHeight()
);
setClipBounds(newClipBounds);
DeviceProfile grid = mLauncher.getDeviceProfile();
if (FeatureFlags.LAUNCHER3_ALL_APPS_PULL_UP) {
if (!grid.isVerticalBarLayout()) {
@@ -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