Exemple #1
0
  private void updateView() {
    switch (step) {
      case STEP_1:
        leftButton.setText(R.string.cancel);
        rightButton.setText("");
        rightButton.setEnabled(false);
        choosePattern = null;
        confirm = false;
        lockPatternView.clearPattern();
        lockPatternView.enableInput();
        break;
      case STEP_2:
        leftButton.setText(R.string.try_again);
        rightButton.setText(R.string.goon);
        rightButton.setEnabled(true);
        lockPatternView.disableInput();
        break;
      case STEP_3:
        leftButton.setText(R.string.cancel);
        rightButton.setText("");
        rightButton.setEnabled(false);
        lockPatternView.clearPattern();
        lockPatternView.enableInput();
        break;
      case STEP_4:
        leftButton.setText(R.string.cancel);
        if (confirm) {
          rightButton.setText(R.string.confirm);
          rightButton.setEnabled(true);
          lockPatternView.disableInput();
        } else {
          rightButton.setText("");
          lockPatternView.setDisplayMode(DisplayMode.Wrong);
          lockPatternView.enableInput();
          rightButton.setEnabled(false);
        }

        break;

      default:
        break;
    }
  }
  // 绘制完成
  @Override
  public void onPatternDetected(List<Cell> pattern) {
    Log.e(TAG, "onPatternDetected");

    // 小于四个点。
    if (pattern.size() < LockPatternView.MIN_LOCK_PATTERN_SIZE) {
      tipTextView.setText("最少连接" + LockPatternView.MIN_LOCK_PATTERN_SIZE + "个点,请重新绘制");
      resetTextView.setVisibility(View.VISIBLE);
      resetTextView.setVisibility(View.INVISIBLE);
      lockPatternView.clearPattern();
      return;
    }

    if (choosePattern == null) {
      choosePattern = new ArrayList<Cell>(pattern);
      Log.e(TAG, "choosePattern = " + Arrays.toString(choosePattern.toArray()));

      step = STEP_2;
      updateView();
      return;
    }

    Log.e(TAG, "choosePattern = " + Arrays.toString(choosePattern.toArray()));
    Log.e(TAG, "pattern = " + Arrays.toString(pattern.toArray()));

    // 如果两次绘制相同
    if (choosePattern.equals(pattern)) {
      Log.e(TAG, "pattern = " + Arrays.toString(pattern.toArray()));

      confirm = true;
    } else {
      confirm = false;
    }

    step = STEP_3;
    updateView();
  }
  private void updateView() {
    switch (step) {
      case STEP_1:
        {
          choosePattern = null;
          confirm = false;
          lockPatternView.clearPattern();
          lockPatternView.enableInput();
          resetTextView.setVisibility(View.INVISIBLE);
          tipTextView.setText("绘制解锁图案");
          tipTextView.setVisibility(View.VISIBLE);
        }
        break;

      case STEP_2:
        {
          tipTextView.setText("再次绘制解锁图案");
          tipTextView.setVisibility(View.VISIBLE);
          lockPatternView.clearPattern();
          lockPatternView.enableInput();
        }
        break;

      case STEP_3:
        {
          // 与第一次绘制的图案相同,成功!
          if (confirm) {
            lockPatternView.disableInput();

            GestureLockUtil.setGestureLock(LockPatternView.patternToString(choosePattern));

            // 跳转到别的界面
            if (type == TYPE_MANAGE) {
              this.setResult(RESULT_OK);
              this.finish();

            } else if (type == TYPE_REGISTER) {
              Intent intent = new Intent(this, KeeperMainActivity.class);
              this.startActivity(intent);
              this.finish();
            }

          } else {
            // 与第一次绘制的图案不同,
            resetTextView.setVisibility(View.VISIBLE);
            tipTextView.setText("与上一次绘制不一致,请重新绘制");
            tipTextView.setVisibility(View.VISIBLE);
            shakeTip();

            lockPatternView.setDisplayMode(DisplayMode.Wrong);
            clearWrongMode();

            lockPatternView.enableInput();
          }
        }

        break;

      default:
        break;
    }
  }