summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-10-09 11:56:42 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-10-09 11:56:42 +0000
commit9eb155567d911516ed23bad643b47486d6cc6fcd (patch)
treeb0a080901a2e4241e3767c4e64d176d7c7774b96 /core/java
parent70dc1ba4bb717fd8bdecb8deba7e03f33b59fd94 (diff)
parent98d3f0a8202cf90941737ec60be728a53b567582 (diff)
Merge "Improve starting offset calculation"
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/widget/SmartSelectSprite.java32
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);