Merge "Stable seek bar positioning" am: 874b481cdf
am: ffb8583a65
Change-Id: I049976100806ea78d99bad3201945ceccb0ee8c5
This commit is contained in:
@@ -95,6 +95,7 @@ public abstract class AbsSeekBar extends ProgressBar {
|
||||
private float mTouchDownX;
|
||||
@UnsupportedAppUsage
|
||||
private boolean mIsDragging;
|
||||
private float mTouchThumbOffset = 0.0f;
|
||||
|
||||
private List<Rect> mUserGestureExclusionRects = Collections.emptyList();
|
||||
private final List<Rect> mGestureExclusionRects = new ArrayList<>();
|
||||
@@ -874,6 +875,14 @@ public abstract class AbsSeekBar extends ProgressBar {
|
||||
|
||||
switch (event.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
if (mThumb != null) {
|
||||
final int availableWidth = getWidth() - mPaddingLeft - mPaddingRight;
|
||||
mTouchThumbOffset = (getProgress() - getMin()) / (float) (getMax()
|
||||
- getMin()) - (event.getX() - mPaddingLeft) / availableWidth;
|
||||
if (Math.abs(mTouchThumbOffset * availableWidth) > getThumbOffset()) {
|
||||
mTouchThumbOffset = 0;
|
||||
}
|
||||
}
|
||||
if (isInScrollingContainer()) {
|
||||
mTouchDownX = event.getX();
|
||||
} else {
|
||||
@@ -956,7 +965,8 @@ public abstract class AbsSeekBar extends ProgressBar {
|
||||
} else if (x < mPaddingLeft) {
|
||||
scale = 1.0f;
|
||||
} else {
|
||||
scale = (availableWidth - x + mPaddingLeft) / (float) availableWidth;
|
||||
scale = (availableWidth - x + mPaddingLeft) / (float) availableWidth
|
||||
+ mTouchThumbOffset;
|
||||
progress = mTouchProgressOffset;
|
||||
}
|
||||
} else {
|
||||
@@ -965,7 +975,7 @@ public abstract class AbsSeekBar extends ProgressBar {
|
||||
} else if (x > width - mPaddingRight) {
|
||||
scale = 1.0f;
|
||||
} else {
|
||||
scale = (x - mPaddingLeft) / (float) availableWidth;
|
||||
scale = (x - mPaddingLeft) / (float) availableWidth + mTouchThumbOffset;
|
||||
progress = mTouchProgressOffset;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user