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