private void doCheckAndCreatePattern(List<LockPatternView.Cell> pattern) { if (pattern.size() < minWiredDots) { lockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong); doLockPatternResult(ResuleType.MIN_DOTS_FAIL); lockPatternView.postDelayed(mLockPatternViewReloader, DELAY_TIME_TO_RELOAD_LOCK_PATTERN_VIEW); return; } executeLockPatternTask(pattern); }
@Override public void onPatternCleared() { lockPatternView.removeCallbacks(mLockPatternViewReloader); switch (lockPatternType) { case CREATE_PATTERN: case COMPARE_PATTERN: lockPatternView.setDisplayMode(LockPatternView.DisplayMode.Correct); break; case VERIFY_CAPTCHA: List<LockPatternView.Cell> pattern = getIntent().getParcelableArrayListExtra(EXTRA_PATTERN); lockPatternView.setPattern(LockPatternView.DisplayMode.Animate, pattern); break; } onPatternCleared(lockPatternType); }
protected void doLockPatternResult(ResuleType resuleType) { switch (resuleType) { case MIN_DOTS_FAIL: Toast.makeText(this, "至少连接" + minWiredDots + "个点,请重试", Toast.LENGTH_SHORT).show(); break; case PATTERN_CREATE: lockPatternView.clearPattern(); break; case COMPARE_OK: if (lockPatternType == LockPatternType.CREATE_PATTERN) { finishWithResultOk(getIntent().getCharArrayExtra(EXTRA_PATTERN)); } else { finishWithResultOk(null); } break; case COMPARE_FAIL: if (lockPatternType == LockPatternType.CREATE_PATTERN) { // not do something } else { if (retryCount >= maxRetries) { finishWithNegativeResult(RESULT_FAILED); } } break; } }
public void setLockPatternType(LockPatternType lockPatternType) { this.lockPatternType = lockPatternType; if (lockPatternType == LockPatternType.VERIFY_CAPTCHA) { final ArrayList<LockPatternView.Cell> pattern; if (getIntent().hasExtra(EXTRA_PATTERN)) { pattern = getIntent().getParcelableArrayListExtra(EXTRA_PATTERN); } else { getIntent() .putParcelableArrayListExtra( EXTRA_PATTERN, pattern = LockPatternUtils.genCaptchaPattern(captchaWiredDots)); } lockPatternView.setPattern(LockPatternView.DisplayMode.Animate, pattern); } }
@Override public void onPatternDetected(List<LockPatternView.Cell> pattern) { switch (lockPatternType) { case CREATE_PATTERN: doCheckAndCreatePattern(pattern); break; case COMPARE_PATTERN: doComparePattern(pattern); break; case VERIFY_CAPTCHA: if (!LockPatternView.DisplayMode.Animate.equals(lockPatternView.getDisplayMode())) { doComparePattern(pattern); } break; } onPatternDetected(lockPatternType); }
protected final void init(LockPatternView lockPatternView) { this.lockPatternView = lockPatternView; initLockPatternType(); initSettings(); initLockPatternView(); if (lockPatternType == LockPatternType.VERIFY_CAPTCHA) { final ArrayList<LockPatternView.Cell> pattern; if (getIntent().hasExtra(EXTRA_PATTERN)) { pattern = getIntent().getParcelableArrayListExtra(EXTRA_PATTERN); } else { getIntent() .putParcelableArrayListExtra( EXTRA_PATTERN, pattern = LockPatternUtils.genCaptchaPattern(captchaWiredDots)); } lockPatternView.setPattern(LockPatternView.DisplayMode.Animate, pattern); } onInit(lockPatternType); }
private final void initLockPatternView() { LockPatternView.DisplayMode lastDisplayMode = lockPatternView != null ? lockPatternView.getDisplayMode() : null; List<LockPatternView.Cell> lastPattern = lockPatternView != null ? lockPatternView.getPattern() : null; switch (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) { case Configuration.SCREENLAYOUT_SIZE_LARGE: case Configuration.SCREENLAYOUT_SIZE_XLARGE: { final int size = getResources().getDimensionPixelSize(R.dimen.lock_pattern_view_size); ViewGroup.LayoutParams lp = lockPatternView.getLayoutParams(); lp.width = size; lp.height = size; lockPatternView.setLayoutParams(lp); break; } // LARGE / XLARGE } boolean hapticFeedbackEnabled = false; try { hapticFeedbackEnabled = Settings.System.getInt(getContentResolver(), Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) != 0; } catch (Throwable t) { /** Ignore it. */ } lockPatternView.setTactileFeedbackEnabled(hapticFeedbackEnabled); lockPatternView.setOnPatternListener(this); lockPatternView.setInStealthMode( stealthMode && lockPatternType != LockPatternType.VERIFY_CAPTCHA); if (lastPattern != null && lastDisplayMode != null && lockPatternType != LockPatternType.VERIFY_CAPTCHA) { lockPatternView.setPattern(lastDisplayMode, lastPattern); } }
@Override public void run() { lockPatternView.clearPattern(); onPatternCleared(); }
@Override public void onPatternStart() { lockPatternView.removeCallbacks(mLockPatternViewReloader); lockPatternView.setDisplayMode(LockPatternView.DisplayMode.Correct); onPatternStart(lockPatternType); }