Exemplo n.º 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;
    }
  }
Exemplo n.º 2
0
  @Override
  public void onPatternDetected(List<Cell> pattern) {
    Log.d(TAG, "onPatternDetected");

    if (pattern.size() < LockPatternView.MIN_LOCK_PATTERN_SIZE) {
      Toast.makeText(this, R.string.lockpattern_recording_incorrect_too_short, Toast.LENGTH_LONG)
          .show();
      lockPatternView.setDisplayMode(DisplayMode.Wrong);
      return;
    }

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

      step = STEP_2;
      updateView();
      return;
    }
    // [(row=1,clmn=0), (row=2,clmn=0), (row=1,clmn=1), (row=0,clmn=2)]
    // [(row=1,clmn=0), (row=2,clmn=0), (row=1,clmn=1), (row=0,clmn=2)]

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

    if (choosePattern.equals(pattern)) {
      //            Log.d(TAG, "pattern = "+pattern.toString());
      //            Log.d(TAG, "pattern.size() = "+pattern.size());
      Log.d(TAG, "pattern = " + Arrays.toString(pattern.toArray()));

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

    step = STEP_4;
    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;
    }
  }