public synchronized void setProgressAndThumb(int progress) { setProgress(progress); onSizeChanged(getWidth(), getHeight(), 0, 0); if (progress != lastProgress) { // Only enact listener if the progress has actually changed lastProgress = progress; onChangeListener.onProgressChanged(this, progress, true); } }
void onProgressRefresh(float scale, boolean fromUser) { Drawable thumb = mThumb; if (thumb != null) { setThumbPos(getHeight(), thumb, scale, Integer.MIN_VALUE); invalidate(); } if (mOnSeekBarChangeListener != null) { mOnSeekBarChangeListener.onProgressChanged(this, getProgress(), fromUser); } }
@Override public boolean onTouchEvent(MotionEvent event) { String tag = "Seekbar"; Log.d(tag, event.toString()); Log.d(tag, "------------"); requestParentTouchRecursive(getParent(), true); if (!isEnabled()) { return false; } switch (event.getAction()) { case MotionEvent.ACTION_UP: onSeekBarChangeListener.onStopTrackingTouch(this); invalidate(); requestParentTouchRecursive(getParent(), false); break; case MotionEvent.ACTION_DOWN: onSeekBarChangeListener.onStartTrackingTouch(this); invalidate(); break; case MotionEvent.ACTION_MOVE: int pos = (int) (getMax() * event.getX() / getWidth()); Log.d(tag, "pos => " + pos); setProgress(pos); onSeekBarChangeListener.onProgressChanged(this, pos, true); // onSizeChanged(getWidth(), getHeight(), 0, 0); invalidate(); break; default: case MotionEvent.ACTION_CANCEL: onSeekBarChangeListener.onProgressChanged(this, getProgress(), true); requestParentTouchRecursive(getParent(), false); invalidate(); break; } return true; }
@Override public boolean onTouchEvent(MotionEvent event) { if (!isEnabled()) { return false; } switch (event.getAction()) { case MotionEvent.ACTION_DOWN: onChangeListener.onStartTrackingTouch(this); setPressed(true); setSelected(true); break; case MotionEvent.ACTION_MOVE: super.onTouchEvent(event); int progress = getMax() - (int) (getMax() * event.getY() / getHeight()); // Ensure progress stays within boundaries if (progress < 0) { progress = 0; } if (progress > getMax()) { progress = getMax(); } setProgress(progress); // Draw progress if (progress != lastProgress) { // Only enact listener if the progress has actually changed lastProgress = progress; onChangeListener.onProgressChanged(this, progress, true); } onSizeChanged(getWidth(), getHeight(), 0, 0); setPressed(true); setSelected(true); break; case MotionEvent.ACTION_UP: onChangeListener.onStopTrackingTouch(this); setPressed(false); setSelected(false); break; case MotionEvent.ACTION_CANCEL: super.onTouchEvent(event); setPressed(false); setSelected(false); break; } return true; }
private void setProgressInternal(int progress) { if (this.mProgress != progress) { this.mProgress = progress; if (!mFromUser) { int newPercent = (this.mProgress / this.mMaxProgress) * mMaxProgress; int newAngle = (newPercent / mMaxProgress) * TOTAL_DEGREES_INT; this.setAngle(newAngle); mProgressPercent = newPercent; } if (mIsProgressSetViaApi) { mAngle = mProgress * 360.0f / mMaxProgress; } } // Log.e("setProgressInternal", mProgressPercent + "...." + mProgress); mListener.onProgressChanged(this, mProgress, mFromUser); mFromUser = false; }