Merge \"All Apps header shadow is drawn incorrectly\" into ub-launcher3-calgary
am: b43ed13d61
Change-Id: I61bbfb298c7392206be067afda7ce096df43f64f
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user