diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2017-10-09 11:56:42 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-10-09 11:56:42 +0000 |
| commit | 9eb155567d911516ed23bad643b47486d6cc6fcd (patch) | |
| tree | b0a080901a2e4241e3767c4e64d176d7c7774b96 /core/java | |
| parent | 70dc1ba4bb717fd8bdecb8deba7e03f33b59fd94 (diff) | |
| parent | 98d3f0a8202cf90941737ec60be728a53b567582 (diff) | |
Merge "Improve starting offset calculation"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/widget/SmartSelectSprite.java | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/core/java/android/widget/SmartSelectSprite.java b/core/java/android/widget/SmartSelectSprite.java index 7cbc494b37af..a391c6ee8ec3 100644 --- a/core/java/android/widget/SmartSelectSprite.java +++ b/core/java/android/widget/SmartSelectSprite.java @@ -206,7 +206,7 @@ final class SmartSelectSprite { if (mRectangleBorderType == RectangleBorderType.OVERSHOOT) { mDrawRect.left -= cornerRadius / 2; - mDrawRect.right -= cornerRadius / 2; + mDrawRect.right += cornerRadius / 2; } else { switch (mExpansionDirection) { case ExpansionDirection.CENTER: @@ -437,6 +437,7 @@ final class SmartSelectSprite { RectangleWithTextSelectionLayout centerRectangle = null; int startingOffset = 0; + int startingRectangleIndex = 0; for (int index = 0; index < rectangleCount; ++index) { final RectangleWithTextSelectionLayout rectangleWithTextSelectionLayout = destinationRectangles.get(index); @@ -446,6 +447,7 @@ final class SmartSelectSprite { break; } startingOffset += rectangle.width(); + ++startingRectangleIndex; } if (centerRectangle == null) { @@ -454,10 +456,6 @@ final class SmartSelectSprite { startingOffset += start.x - centerRectangle.getRectangle().left; - final float centerRectangleHalfHeight = centerRectangle.getRectangle().height() / 2; - final float startingOffsetLeft = startingOffset - centerRectangleHalfHeight; - final float startingOffsetRight = startingOffset + centerRectangleHalfHeight; - final @RoundedRectangleShape.ExpansionDirection int[] expansionDirections = generateDirections(centerRectangle, destinationRectangles); @@ -482,6 +480,30 @@ final class SmartSelectSprite { final RectangleList rectangleList = new RectangleList(shapes); final ShapeDrawable shapeDrawable = new ShapeDrawable(rectangleList); + final float startingOffsetLeft; + final float startingOffsetRight; + + final RoundedRectangleShape startingRectangleShape = shapes.get(startingRectangleIndex); + final float cornerRadius = startingRectangleShape.getCornerRadius(); + if (startingRectangleShape.mRectangleBorderType + == RoundedRectangleShape.RectangleBorderType.FIT) { + switch (startingRectangleShape.mExpansionDirection) { + case RoundedRectangleShape.ExpansionDirection.LEFT: + startingOffsetLeft = startingOffsetRight = startingOffset - cornerRadius / 2; + break; + case RoundedRectangleShape.ExpansionDirection.RIGHT: + startingOffsetLeft = startingOffsetRight = startingOffset + cornerRadius / 2; + break; + case RoundedRectangleShape.ExpansionDirection.CENTER: // fall through + default: + startingOffsetLeft = startingOffset - cornerRadius / 2; + startingOffsetRight = startingOffset + cornerRadius / 2; + break; + } + } else { + startingOffsetLeft = startingOffsetRight = startingOffset; + } + final Paint paint = shapeDrawable.getPaint(); paint.setColor(mStrokeColor); paint.setStyle(Paint.Style.STROKE); |
