diff --git a/app/src/main/java/james/metronome/views/SeekBar.java b/app/src/main/java/james/metronome/views/SeekBar.java index 5f5ae19bc86886aeac263d8b6e68dc743090979e..7387f996b86105800a53bbd85f4364bd43b0f5e6 100644 --- a/app/src/main/java/james/metronome/views/SeekBar.java +++ b/app/src/main/java/james/metronome/views/SeekBar.java @@ -23,6 +23,7 @@ public class SeekBar extends View implements View.OnTouchListener { private OnProgressChangeListener listener; private int progress; private int maxProgress = 100; + private float touchDiff; private Disposable textColorPrimarySubscription; private Disposable textColorSecondarySubscription; @@ -116,8 +117,15 @@ public class SeekBar extends View implements View.OnTouchListener { float x = event.getX(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: + touchDiff = x - (((float) progress / maxProgress) * view.getMeasuredWidth()); case MotionEvent.ACTION_MOVE: - setProgress((int) (maxProgress * (x / view.getMeasuredWidth()))); + int progress = (int) (maxProgress * ((x - touchDiff) / view.getMeasuredWidth())); + if (progress < 0) + progress = 0; + else if (progress > maxProgress) + progress = maxProgress; + + setProgress(progress); } return false; }