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; } }