diff options
2 files changed, 10 insertions, 45 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java index 609ca97c1b02..3728388f63b2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java @@ -25,7 +25,6 @@ import android.graphics.Rect; import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; -import android.view.ViewGroup; import android.view.ViewOutlineProvider; import com.android.systemui.R; @@ -102,28 +101,6 @@ public abstract class ExpandableOutlineView extends ExpandableView { } }; - /** - * Get the relative start padding of a view relative to this view. This recursively walks up the - * hierarchy and does the corresponding measuring. - * - * @param view the view to get the padding for. The requested view has to be a child of this - * notification. - * @return the start padding - */ - public int getRelativeStartPadding(View view) { - boolean isRtl = isLayoutRtl(); - int startPadding = 0; - while (view.getParent() instanceof ViewGroup) { - View parent = (View) view.getParent(); - startPadding += isRtl ? parent.getWidth() - view.getRight() : view.getLeft(); - view = parent; - if (view == this) { - return startPadding; - } - } - return startPadding; - } - protected Path getClipPath(boolean ignoreTranslation) { int left; int top; @@ -132,17 +109,15 @@ public abstract class ExpandableOutlineView extends ExpandableView { int height; float topRoundness = mAlwaysRoundBothCorners ? mOutlineRadius : getCurrentBackgroundRadiusTop(); - if (!mCustomOutline) { - // Extend left/right clip bounds beyond the notification by the - // 1) space between the notification and edge of screen - // 2) corner radius (so we do not see any rounding as the notification goes off screen) - left = (int) (-getRelativeStartPadding(this) - mOutlineRadius); - right = (int) (((View) getParent()).getWidth() + mOutlineRadius); - + int translation = mShouldTranslateContents && !ignoreTranslation + ? (int) getTranslation() : 0; + int halfExtraWidth = (int) (mExtraWidthForClipping / 2.0f); + left = Math.max(translation, 0) - halfExtraWidth; + top = mClipTopAmount + mBackgroundTop; + right = getWidth() + halfExtraWidth + Math.min(translation, 0); // If the top is rounded we want the bottom to be at most at the top roundness, in order // to avoid the shadow changing when scrolling up. - top = mClipTopAmount + mBackgroundTop; bottom = Math.max(mMinimumHeightForClipping, Math.max(getActualHeight() - mClipBottomAmount, (int) (top + topRoundness))); } else { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java index 1086d6761249..73e080423d40 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java @@ -69,8 +69,6 @@ public abstract class ExpandableView extends FrameLayout implements Dumpable { private float mContentTranslation; protected boolean mLastInSection; protected boolean mFirstInSection; - private float mOutlineRadius; - private float mParentWidth; public ExpandableView(Context context, AttributeSet attrs) { super(context, attrs); @@ -81,7 +79,6 @@ public abstract class ExpandableView extends FrameLayout implements Dumpable { private void initDimens() { mContentShift = getResources().getDimensionPixelSize( R.dimen.shelf_transform_content_shift); - mOutlineRadius = getResources().getDimensionPixelSize(R.dimen.notification_corner_radius); } @Override @@ -153,9 +150,6 @@ public abstract class ExpandableView extends FrameLayout implements Dumpable { @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); - if (getParent() != null) { - mParentWidth = ((View) getParent()).getWidth(); - } updateClipping(); } @@ -442,15 +436,11 @@ public abstract class ExpandableView extends FrameLayout implements Dumpable { protected void updateClipping() { if (mClipToActualHeight && shouldClipToActualHeight()) { - final int top = getClipTopAmount(); - final int bottom = Math.max(Math.max(getActualHeight() + getExtraBottomPadding() + int top = getClipTopAmount(); + int bottom = Math.max(Math.max(getActualHeight() + getExtraBottomPadding() - mClipBottomAmount, top), mMinimumHeightForClipping); - // Extend left/right clip bounds beyond the notification by the - // 1) space between the notification and edge of screen - // 2) corner radius (so we do not see any rounding as the notification goes off screen) - final int left = (int) (-getRelativeStartPadding(this) - mOutlineRadius); - final int right = (int) (mParentWidth + mOutlineRadius); - mClipRect.set(left, top, right, bottom); + int halfExtraWidth = (int) (mExtraWidthForClipping / 2.0f); + mClipRect.set(-halfExtraWidth, top, getWidth() + halfExtraWidth, bottom); setClipBounds(mClipRect); } else { setClipBounds(null); |