Beispiel #1
0
 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);
   }
 }
Beispiel #3
0
  @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;
  }
Beispiel #4
0
  @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;
  }