/** Handles thumb selection and movement. Notifies listener callback on certain events. */ @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: pressedThumb = evalPressedThumb(event.getX()); invalidate(); break; case MotionEvent.ACTION_MOVE: if (pressedThumb != null) { if (Thumb.MIN.equals(pressedThumb)) { setNormalizedMinValue(screenToNormalized(event.getX())); } else if (Thumb.MAX.equals(pressedThumb)) { setNormalizedMaxValue(screenToNormalized(event.getX())); } if (notifyWhileDragging && listener != null) { listener.rangeSeekBarValuesChanged(getSelectedMinValue(), getSelectedMaxValue()); } } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: pressedThumb = null; invalidate(); if (listener != null) { listener.rangeSeekBarValuesChanged(getSelectedMinValue(), getSelectedMaxValue()); } break; } return true; }