diff --git a/indicatorseekbar/src/main/java/com/warkiz/widget/IndicatorSeekBar.java b/indicatorseekbar/src/main/java/com/warkiz/widget/IndicatorSeekBar.java index f735303..7a228da 100644 --- a/indicatorseekbar/src/main/java/com/warkiz/widget/IndicatorSeekBar.java +++ b/indicatorseekbar/src/main/java/com/warkiz/widget/IndicatorSeekBar.java @@ -53,7 +53,8 @@ public class IndicatorSeekBar extends View { private Rect mRect; private float mCustomDrawableMaxHeight;//the max height for custom drawable private float lastProgress; - private float mFaultTolerance = -1;//the tolerance for user seek bar touching + private float mFaultToleranceHorizontal = -1;//the tolerance for user seek bar touching horizontally + private float mFaultToleranceVertical = -1;//the tolerance for user seek bar touching vertically private float mScreenWidth = -1; private boolean mClearPadding; private SeekParams mSeekParams;//save the params when seeking change. @@ -193,6 +194,8 @@ private void initAttrs(Context context, AttributeSet attrs) { mOnlyThumbDraggable = ta.getBoolean(R.styleable.IndicatorSeekBar_isb_only_thumb_draggable, builder.onlyThumbDraggable); mSeekSmoothly = ta.getBoolean(R.styleable.IndicatorSeekBar_isb_seek_smoothly, builder.seekSmoothly); mR2L = ta.getBoolean(R.styleable.IndicatorSeekBar_isb_r2l, builder.r2l); + mFaultToleranceHorizontal = ta.getDimensionPixelSize(R.styleable.IndicatorSeekBar_isb_horizontal_touch_gap, SizeUtils.dp2px(context, 5)); + mFaultToleranceVertical = ta.getDimensionPixelSize(R.styleable.IndicatorSeekBar_isb_vertical_touch_gap, SizeUtils.dp2px(context, 5)); //track mBackgroundTrackSize = ta.getDimensionPixelSize(R.styleable.IndicatorSeekBar_isb_track_background_size, builder.trackBackgroundSize); mProgressTrackSize = ta.getDimensionPixelSize(R.styleable.IndicatorSeekBar_isb_track_progress_size, builder.trackProgressSize); @@ -1278,11 +1281,14 @@ private float calculateTouchX(float touchX) { } private boolean isTouchSeekBar(float mX, float mY) { - if (mFaultTolerance == -1) { - mFaultTolerance = SizeUtils.dp2px(mContext, 5); + if (mFaultToleranceVertical == -1) { + mFaultToleranceVertical = SizeUtils.dp2px(mContext, 5); } - boolean inWidthRange = mX >= (mPaddingLeft - 2 * mFaultTolerance) && mX <= (mMeasuredWidth - mPaddingRight + 2 * mFaultTolerance); - boolean inHeightRange = mY >= mProgressTrack.top - mThumbTouchRadius - mFaultTolerance && mY <= mProgressTrack.top + mThumbTouchRadius + mFaultTolerance; + if (mFaultToleranceHorizontal == -1) { + mFaultToleranceHorizontal = SizeUtils.dp2px(mContext, 5); + } + boolean inWidthRange = mX >= (mPaddingLeft - 2 * mFaultToleranceHorizontal) && mX <= (mMeasuredWidth - mPaddingRight + 2 * mFaultToleranceHorizontal); + boolean inHeightRange = mY >= mProgressTrack.top - mThumbTouchRadius - mFaultToleranceVertical && mY <= mProgressTrack.top + mThumbTouchRadius + mFaultToleranceVertical; return inWidthRange && inHeightRange; } diff --git a/indicatorseekbar/src/main/res/values/attr.xml b/indicatorseekbar/src/main/res/values/attr.xml index a15081a..ac2d979 100644 --- a/indicatorseekbar/src/main/res/values/attr.xml +++ b/indicatorseekbar/src/main/res/values/attr.xml @@ -9,6 +9,8 @@ + +