예제 #1
0
  /**
   * Changes the checked state of this button.
   *
   * @param checked true to check the button, false to uncheck it
   */
  public void setChecked(boolean checked) {

    if (mChecked != checked) {
      mChecked = checked;

      mBtnPos = checked ? mBtnOnPos : mBtnOffPos;
      mRealPos = getRealPos(mBtnPos);
      invalidate();

      // Avoid infinite recursions if setChecked() is called from a
      // listener
      if (mBroadcasting) {
        return;
      }

      mBroadcasting = true;
      if (mOnCheckedChangeListener != null) {
        mOnCheckedChangeListener.onCheckedChanged(SwitchButton.this, mChecked);
      }
      if (mOnCheckedChangeWidgetListener != null) {
        mOnCheckedChangeWidgetListener.onCheckedChanged(SwitchButton.this, mChecked);
      }

      mBroadcasting = false;
    }
  }
예제 #2
0
  public void setChecked(boolean checked) {
    if (mChecked != checked) {
      mChecked = checked;

      // 初始化按钮位置
      curBtnPos = checked ? onBtnPos : offBtnPos;
      // 改变背景图片
      bmCurBgPic = checked ? bmBgGreen : bmBgWhite;
      invalidate();

      if (mBroadcasting) {
        // NO-OP
        return;
      }
      // 正在执行监听事件
      mBroadcasting = true;
      if (mOnCheckedChangeListener != null) {
        mOnCheckedChangeListener.onCheckedChanged(UISwitchButton.this, mChecked);
      }
      if (mOnCheckedChangeWidgetListener != null) {
        mOnCheckedChangeWidgetListener.onCheckedChanged(UISwitchButton.this, mChecked);
      }
      // 监听事件结束
      mBroadcasting = false;
    }
  }
예제 #3
0
  @TargetApi(Build.VERSION_CODES.KITKAT)
  @Override
  public void setChecked(boolean checked) {
    if (mChecked != checked) {
      mChecked = checked;
      refreshDrawableState();

      if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
              && isAttachedToWindow()
              && isLaidOut())
          || (mIsAttachWindow && mOval != null)) {
        // To Animator
        animateCheckedState(checked);
      } else {
        setAnimatorValue(checked);
      }

      // Avoid infinite recursions if setChecked() is called from a listener
      if (mBroadcasting) {
        return;
      }
      mBroadcasting = true;
      if (mOnCheckedChangeListener != null) {
        mOnCheckedChangeListener.onCheckedChanged(this, checked);
      }
      mBroadcasting = false;
    }
  }
예제 #4
0
  @Override
  public void setChecked(boolean checked) {
    super.setChecked(checked);

    if (mOnCheckedChangeListener != null) {
      mOnCheckedChangeListener.onCheckedChanged(this, checked, mFromUser);
    }
  }
예제 #5
0
 /**
  * Change the checked state of this Switch immediately without showing animation.
  *
  * @param checked The checked state.
  */
 public void setCheckedImmediately(boolean checked) {
   if (mChecked != checked) {
     mChecked = checked;
     if (mOnCheckedChangeListener != null)
       mOnCheckedChangeListener.onCheckedChanged(this, mChecked);
   }
   mThumbPosition = mChecked ? 1f : 0f;
   invalidate();
 }
예제 #6
0
 @Override
 public void setChecked(boolean checked) {
   mChecked = checked;
   reset();
   invalidate();
   if (mListener != null) {
     mListener.onCheckedChanged(SmoothCheckBox.this, mChecked);
   }
 }
예제 #7
0
  @Override
  public void setChecked(boolean checked) {
    if (mChecked != checked) {
      mChecked = checked;
      if (mOnCheckedChangeListener != null)
        mOnCheckedChangeListener.onCheckedChanged(this, mChecked);
    }

    float desPos = mChecked ? 1f : 0f;

    if (mThumbPosition != desPos) startAnimation();
  }
예제 #8
0
  @Override
  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    int idx = (int) buttonView.getTag();
    if (isChecked) {
      if (mMinCheckedIdx == -1 || idx < mMinCheckedIdx) {
        //
        if (mMaxCheckedIdx == -1) {
          mMaxCheckedIdx = mMinCheckedIdx;
        }
        mMinCheckedIdx = idx;
      } else if (idx > mMaxCheckedIdx) {
        mMaxCheckedIdx = idx;
      }
    } else {
      // Recalculate min max
      mMinCheckedIdx = -1;
      mMaxCheckedIdx = -1;
    }

    SparseBooleanArray states = new SparseBooleanArray(CHECKBOX_COUNT);
    for (int i = 0; i < CHECKBOX_COUNT; i++) {
      CheckBox view = (CheckBox) getChildAt(i);

      boolean checked = view.isChecked();
      // Select in range
      if (isChecked) {
        if (!checked && i > mMinCheckedIdx && i < mMaxCheckedIdx) {
          checked = true;
          setCheckedSilently(view, true);
        }
      } else {
        if (checked) {
          if (mMinCheckedIdx == -1) {
            mMinCheckedIdx = i;
          } else {
            mMaxCheckedIdx = i;
          }
        }
      }
      if (checked) {
        int value = i + 1;
        states.put(value, true);
      }
    }

    if (mListener != null) {
      mListener.onCheckedChanged(this, states);
    }
  }
예제 #9
0
  /**
   * checked with animation
   *
   * @param checked checked
   * @param animate change with animation
   */
  public void setChecked(boolean checked, boolean animate) {
    if (animate) {
      mTickDrawing = false;
      mChecked = checked;
      mDrewDistance = 0f;
      if (checked) {
        startCheckedAnimation();
      } else {
        startUnCheckedAnimation();
      }
      if (mListener != null) {
        mListener.onCheckedChanged(SmoothCheckBox.this, mChecked);
      }

    } else {
      this.setChecked(checked);
    }
  }