@@ -35,7 +35,8 @@ import com.lb.video_trimmer_library.interfaces.OnRangeSeekBarListener
3535import kotlin.math.absoluteValue
3636
3737@Suppress(" LeakingThis" )
38- open class RangeSeekBarView @JvmOverloads constructor(context : Context , attrs : AttributeSet ? , defStyleAttr : Int = 0 ) : View(context, attrs, defStyleAttr) {
38+ open class RangeSeekBarView @JvmOverloads constructor(context : Context , attrs : AttributeSet ? , defStyleAttr : Int = 0 ) :
39+ View (context, attrs, defStyleAttr) {
3940 enum class ThumbType (val index : kotlin.Int ) {
4041 LEFT (0 ), RIGHT (1 )
4142 }
@@ -65,7 +66,8 @@ open class RangeSeekBarView @JvmOverloads constructor(context: Context, attrs: A
6566 shadowPaint.color = initShadowColor()
6667 strokePaint.isAntiAlias = true
6768 strokePaint.style = Paint .Style .STROKE
68- strokePaint.strokeWidth = TypedValue .applyDimension(TypedValue .COMPLEX_UNIT_DIP , 2f , context.resources.displayMetrics)
69+ strokePaint.strokeWidth =
70+ TypedValue .applyDimension(TypedValue .COMPLEX_UNIT_DIP , 2f , context.resources.displayMetrics)
6971 strokePaint.color = 0xffffffff .toInt()
7072 edgePaint.isAntiAlias = true
7173 edgePaint.color = 0xffffffff .toInt()
@@ -77,10 +79,18 @@ open class RangeSeekBarView @JvmOverloads constructor(context: Context, attrs: A
7779 open fun initThumbTouchExtraMultiplier () = 1.0f
7880
7981 open fun initThumbWidth (context : Context ) =
80- TypedValue .applyDimension(TypedValue .COMPLEX_UNIT_DIP , 27f , context.resources.displayMetrics).toInt().coerceAtLeast(1 )
82+ TypedValue .applyDimension(
83+ TypedValue .COMPLEX_UNIT_DIP ,
84+ 27f ,
85+ context.resources.displayMetrics
86+ ).toInt().coerceAtLeast(1 )
8187
8288 private fun initTimeLineHeight (context : Context ) =
83- TypedValue .applyDimension(TypedValue .COMPLEX_UNIT_DIP , 40f , context.resources.displayMetrics).toInt().coerceAtLeast(1 )
89+ TypedValue .applyDimension(
90+ TypedValue .COMPLEX_UNIT_DIP ,
91+ 40f ,
92+ context.resources.displayMetrics
93+ ).toInt().coerceAtLeast(1 )
8494
8595
8696 fun initMaxWidth () {
@@ -126,12 +136,28 @@ open class RangeSeekBarView @JvmOverloads constructor(context: Context, attrs: A
126136 }
127137 }
128138 // draw stroke around selected range
129- canvas.drawRect((thumbs[ThumbType .LEFT .index].pos + paddingLeft + thumbWidth), 0f , thumbs[ThumbType .RIGHT .index].pos - paddingRight, timeLineHeight.toFloat(), strokePaint)
139+ canvas.drawRect(
140+ (thumbs[ThumbType .LEFT .index].pos + paddingLeft + thumbWidth),
141+ 0f ,
142+ thumbs[ThumbType .RIGHT .index].pos - paddingRight,
143+ timeLineHeight.toFloat(),
144+ strokePaint
145+ )
130146
131147 // draw edges
132148 val circleRadius = TypedValue .applyDimension(TypedValue .COMPLEX_UNIT_DIP , 6f , context.resources.displayMetrics)
133- canvas.drawCircle((thumbs[ThumbType .LEFT .index].pos + paddingLeft + thumbWidth), timeLineHeight.toFloat() / 2f , circleRadius, edgePaint)
134- canvas.drawCircle(thumbs[ThumbType .RIGHT .index].pos - paddingRight, timeLineHeight.toFloat() / 2f , circleRadius, edgePaint)
149+ canvas.drawCircle(
150+ (thumbs[ThumbType .LEFT .index].pos + paddingLeft + thumbWidth),
151+ timeLineHeight.toFloat() / 2f ,
152+ circleRadius,
153+ edgePaint
154+ )
155+ canvas.drawCircle(
156+ thumbs[ThumbType .RIGHT .index].pos - paddingRight,
157+ timeLineHeight.toFloat() / 2f ,
158+ circleRadius,
159+ edgePaint
160+ )
135161 }
136162
137163 override fun onTouchEvent (ev : MotionEvent ): Boolean {
@@ -159,7 +185,8 @@ open class RangeSeekBarView @JvmOverloads constructor(context: Context, attrs: A
159185 }
160186 MotionEvent .ACTION_MOVE -> {
161187 mThumb = thumbs[currentThumb]
162- mThumb2 = thumbs[if (currentThumb == ThumbType .LEFT .index) ThumbType .RIGHT .index else ThumbType .LEFT .index]
188+ mThumb2 =
189+ thumbs[if (currentThumb == ThumbType .LEFT .index) ThumbType .RIGHT .index else ThumbType .LEFT .index]
163190 // Calculate the distance moved
164191 val dx = coordinate - mThumb.lastTouchX
165192 val newX = mThumb.pos + dx
@@ -270,15 +297,19 @@ open class RangeSeekBarView @JvmOverloads constructor(context: Context, attrs: A
270297 return - 1
271298 var closest = - 1
272299 var minDistanceFound = Float .MAX_VALUE
300+ val x = xPos - thumbWidth// + paddingLeft
301+ // Log.d("AppLog", "xPos:$xPos -> x: $x")
273302 for (thumb in thumbs) {
303+ val thumbPos = if (thumb.index == ThumbType .LEFT .index) thumb.pos else thumb.pos - thumbWidth
304+ // Log.d("AppLog", "thumb ${thumb.index} pos: $thumbPos")
274305 // Find thumb closest to x coordinate
275- val xMin = thumb.pos - thumbWidth * thumbTouchExtraMultiplier
276- val xMax = thumb.pos + thumbWidth * (1.0f + thumbTouchExtraMultiplier)
277- if (xPos in xMin.. xMax) {
278- val xMid = (thumb.pos + thumbWidth) / 2
279- val distance = (xMid - xPos).absoluteValue
306+ val xMin = thumbPos - thumbWidth * thumbTouchExtraMultiplier
307+ val xMax = thumbPos + thumbWidth * thumbTouchExtraMultiplier
308+ if (x in xMin.. xMax) {
309+ val distance = (thumbPos - x).absoluteValue
280310 if (distance < minDistanceFound) {
281311 closest = thumb.index
312+ // Log.d("AppLog", "x: $x distance: $distance selectedThumb:$closest")
282313 minDistanceFound = distance
283314 }
284315 }
0 commit comments