Functional classification: Tools Supported platforms: Android Operating environment: Eclipse Development language: Java Development tool: Eclipse Source code size: 1.06MB Source code download: http://download..com/data/1976924 Source code introduction My gesture lock makes it easy for users to log in. When logging in for the first time, enter your username and password and set a gesture password. When logging in again, you only need to enter the correct gesture password to log in successfully. Source code running screenshot Login screen Tips to create a gesture password Demonstrate the creation of gesture password Create a gesture password Gesture password unlock Source code snippet - package com.zhangyx.MyGestureLock.gesture;
-
- import java.util.List;
-
- import com.lidroid.xutils.ViewUtils;
- import com.lidroid.xutils.view.annotation.ViewInject;
- import com.zhangyx.MyGestureLock.BaseActivity;
- import com.zhangyx.MyGestureLock.LoginActivity;
- import com.zhangyx.MyGestureLock.MainActivity;
- import com.zhangyx.MyGestureLock.R;
- import com.zhangyx.MyGestureLock.app.MyApplication;
- import com.zhangyx.MyGestureLock.util.AnimationUtil;
- import com.zhangyx.MyGestureLock.view.LockPatternUtils;
- import com.zhangyx.MyGestureLock.view.LockPatternView;
- import com.zhangyx.MyGestureLock.view.LockPatternView.Cell;
-
-
- import android.annotation.SuppressLint;
- import android.content.Intent;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.os.CountDownTimer;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.animation.Animation;
- import android.view.animation.AnimationUtils;
- import android.widget.Button;
- import android.widget.LinearLayout;
- import android.widget.TextView;
-
-
-
-
-
-
-
- @SuppressLint ( "ResourceAsColor" )
- public class UnlockGesturePasswordActivity extends BaseActivity {
- private LockPatternView mLockPatternView;
- private int mFailedPatternAttemptsSinceLastTimeout = 0 ;
- private CountDownTimer mCountdownTimer = null ;
-
-
- private Animation mShakeAnim;
-
- @ViewInject (R.id.gesturepwd_unlock_text)
- private TextView mHeadTextView;
- @ViewInject (R.id.rootView)
- private LinearLayout rootView;
- @ViewInject (R.id.changeUser)
- private Button changeUser;
-
- private MyApplication app;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super .onCreate(savedInstanceState);
- setContentView(R.layout.gesturepassword_unlock);
- ViewUtils.inject( this );
- app=(MyApplication) getApplication();
- mLockPatternView = (LockPatternView) findViewById(R.id.gesturepwd_unlock_lockview);
- mLockPatternView.setOnPatternListener(mChooseNewLockPatternListener);
- mLockPatternView.setTactileFeedbackEnabled( true );
- mShakeAnim = AnimationUtils.loadAnimation( this , R.anim.shake_x);
-
- changeUser.setOnClickListener( new OnClickListener() {
-
- @Override
- public void onClick(View v) {
-
-
- app.getLockPatternUtils().clearLock();
- toLoginActivity();
- }
- });
- }
-
- @Override
- protected void onResume() {
- super .onResume();
-
- if (!app.getLockPatternUtils().savedPatternExists()) {
- toLoginActivity();
- }
- }
-
- private void toLoginActivity() {
- startActivity( new Intent(UnlockGesturePasswordActivity. this ,
- LoginActivity. class ));
- AnimationUtil
- .finishActivityAnimation(UnlockGesturePasswordActivity. this );
- }
-
- @Override
- protected void onDestroy() {
- super .onDestroy();
- if (mCountdownTimer != null )
- mCountdownTimer.cancel();
- }
-
- private Runnable mClearPatternRunnable = new Runnable() {
- public void run() {
- mLockPatternView.clearPattern();
- }
- };
-
- protected LockPatternView.OnPatternListener mChooseNewLockPatternListener = new LockPatternView.OnPatternListener() {
-
- @Override
- public void onPatternStart() {
-
- mLockPatternView.removeCallbacks(mClearPatternRunnable);
- patternInProgress();
- }
-
- public void onPatternDetected(List<cell> pattern) {
-
- if (pattern == null )
- return ;
- if (app.getLockPatternUtils()
- .checkPattern(pattern)) {
- mLockPatternView
- .setDisplayMode(LockPatternView.DisplayMode.Correct);
-
-
- loginSuccessToMainAcrtivity();
- } else {
- mLockPatternView
- .setDisplayMode(LockPatternView.DisplayMode.Wrong);
-
- if (pattern.size() >= LockPatternUtils.MIN_PATTERN_REGISTER_FAIL) {
-
- mFailedPatternAttemptsSinceLastTimeout++;
- int retry = LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT
- - mFailedPatternAttemptsSinceLastTimeout;
- if (retry > 0 ) {
- changeUser.setVisibility(View.VISIBLE);
- if (retry == 0 )
- showToast(UnlockGesturePasswordActivity. this
- .getString(R.string.toastlock));
- mHeadTextView.setText( "Wrong password, you can enter it again" + retry + "times" );
- mHeadTextView.setTextColor(Color.RED);
- mHeadTextView.startAnimation(mShakeAnim);
- } else {
-
-
- app.getLockPatternUtils().clearLock();
- toLoginActivity();
- }
- } else {
- showToast( "The input length is not enough, please try again" );
- }
- mLockPatternView.clearPattern();
- }
- }
-
- @Override
- public void onPatternCleared() {
-
- mLockPatternView.removeCallbacks(mClearPatternRunnable);
- }
-
- private void patternInProgress() {
- }
-
- @Override
- public void onPatternCellAdded(List<cell> pattern) {
-
-
- }
-
-
- };
-
- Runnable attemptLockout = new Runnable() {
-
- @Override
- public void run() {
- mLockPatternView.clearPattern();
- mLockPatternView.setEnabled( false );
- mCountdownTimer = new CountDownTimer(
- LockPatternUtils.FAILED_ATTEMPT_TIMEOUT_MS + 1 , 1000 ) {
-
- @Override
- public void onTick( long millisUntilFinished) {
- int secondsRemaining = ( int ) (millisUntilFinished / 1000 ) - 1 ;
- if (secondsRemaining > 0 ) {
- mHeadTextView.setText(secondsRemaining + "Retry after seconds" );
- } else {
- mHeadTextView
- .setText( UnlockGesturePasswordActivity.this
- .getString(R.string.gesture_drawPwd));
- mHeadTextView.setTextColor(Color.WHITE);
- }
-
- }
-
- @Override
- public void onFinish() {
- mLockPatternView.setEnabled( true );
- mFailedPatternAttemptsSinceLastTimeout = 0 ;
- }
- }.start();
- }
- };
-
-
- private void loginSuccessToMainAcrtivity() {
- startActivity( new Intent(UnlockGesturePasswordActivity. this ,
- MainActivity. class ));
- AnimationUtil
- .finishActivityAnimation(UnlockGesturePasswordActivity. this );
- }
-
- }
- </cell></cell>
Source code download: http://download..com/data/1976924 |