Merge "Improve readability of ExpandableOutlineView.getClipPath()" into tm-qpr-dev

This commit is contained in:
Omar Miatello
2022-11-22 14:32:03 +00:00
committed by Android (Google) Code Review

View File

@@ -84,7 +84,7 @@ public abstract class ExpandableOutlineView extends ExpandableView {
int right; int right;
int bottom; int bottom;
int height; int height;
float topRoundness = mAlwaysRoundBothCorners ? getMaxRadius() : getTopCornerRadius(); float topRadius = mAlwaysRoundBothCorners ? getMaxRadius() : getTopCornerRadius();
if (!mCustomOutline) { if (!mCustomOutline) {
// The outline just needs to be shifted if we're translating the contents. Otherwise // The outline just needs to be shifted if we're translating the contents. Otherwise
// it's already in the right place. // it's already in the right place.
@@ -97,7 +97,7 @@ public abstract class ExpandableOutlineView extends ExpandableView {
// If the top is rounded we want the bottom to be at most at the top roundness, in order // 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. // to avoid the shadow changing when scrolling up.
bottom = Math.max(mMinimumHeightForClipping, bottom = Math.max(mMinimumHeightForClipping,
Math.max(getActualHeight() - mClipBottomAmount, (int) (top + topRoundness))); Math.max(getActualHeight() - mClipBottomAmount, (int) (top + topRadius)));
} else { } else {
left = mOutlineRect.left; left = mOutlineRect.left;
top = mOutlineRect.top; top = mOutlineRect.top;
@@ -108,17 +108,17 @@ public abstract class ExpandableOutlineView extends ExpandableView {
if (height == 0) { if (height == 0) {
return EMPTY_PATH; return EMPTY_PATH;
} }
float bottomRoundness = mAlwaysRoundBothCorners ? getMaxRadius() : getBottomCornerRadius(); float bottomRadius = mAlwaysRoundBothCorners ? getMaxRadius() : getBottomCornerRadius();
if (topRoundness + bottomRoundness > height) { if (topRadius + bottomRadius > height) {
float overShoot = topRoundness + bottomRoundness - height; float overShoot = topRadius + bottomRadius - height;
float currentTopRoundness = getTopRoundness(); float currentTopRoundness = getTopRoundness();
float currentBottomRoundness = getBottomRoundness(); float currentBottomRoundness = getBottomRoundness();
topRoundness -= overShoot * currentTopRoundness topRadius -= overShoot * currentTopRoundness
/ (currentTopRoundness + currentBottomRoundness); / (currentTopRoundness + currentBottomRoundness);
bottomRoundness -= overShoot * currentBottomRoundness bottomRadius -= overShoot * currentBottomRoundness
/ (currentTopRoundness + currentBottomRoundness); / (currentTopRoundness + currentBottomRoundness);
} }
getRoundedRectPath(left, top, right, bottom, topRoundness, bottomRoundness, mTmpPath); getRoundedRectPath(left, top, right, bottom, topRadius, bottomRadius, mTmpPath);
return mTmpPath; return mTmpPath;
} }