Fix clamped starting position, seek bar hotspot bounds

BUG: 15720430
Change-Id: I11d40c747ea1a3665e9e2058d95dda1bc8a547ab
This commit is contained in:
Alan Viverette
2014-06-18 17:54:58 -07:00
parent e48df00575
commit 304624100b
2 changed files with 8 additions and 6 deletions

View File

@@ -482,8 +482,8 @@ public abstract class AbsSeekBar extends ProgressBar {
final Rect bounds = mThumb.getBounds();
final int offsetX = mPaddingLeft - mThumbOffset;
final int offsetY = mPaddingTop;
background.setHotspotBounds(left + offsetX, bounds.top + offsetY,
right + offsetX, bounds.bottom + offsetY);
background.setHotspotBounds(left + offsetX, top + offsetY,
right + offsetX, bottom + offsetY);
}
// Canvas will be translated, so 0,0 is where we start drawing

View File

@@ -142,14 +142,16 @@ class Ripple {
}
private void clampStartingPosition() {
final float dX = mStartingX - mBounds.exactCenterX();
final float dY = mStartingY - mBounds.exactCenterY();
final float cX = mBounds.exactCenterX();
final float cY = mBounds.exactCenterY();
final float dX = mStartingX - cX;
final float dY = mStartingY - cY;
final float r = mOuterRadius;
if (dX * dX + dY * dY > r * r) {
// Point is outside the circle, clamp to the circumference.
final double angle = Math.atan2(dY, dX);
mClampedStartingX = (float) (Math.cos(angle) * r);
mClampedStartingY = (float) (Math.sin(angle) * r);
mClampedStartingX = cX + (float) (Math.cos(angle) * r);
mClampedStartingY = cY + (float) (Math.sin(angle) * r);
} else {
mClampedStartingX = mStartingX;
mClampedStartingY = mStartingY;