欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android手勢密碼--設(shè)置和校驗功能的實現(xiàn)代碼

 更新時間:2018年05月08日 09:40:36   作者:ganchuanpu  
這篇文章主要介紹了Android手勢密碼--設(shè)置和校驗功能的實現(xiàn)代碼,非常不錯,具有一定的參考校驗價值,需要的朋友可以參考下

效果圖如下,大家感覺不錯請參考實現(xiàn)代碼

具體代碼如下所示:

private void setGesturePassword() {
 toggleMore.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  @Override
  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
   if (isChecked) {
//     UIUtils.toast("開啟了手勢密碼", false);
//     sp.edit().putBoolean("isOpen", true).commit();
    String inputCode = sp.getString("inputCode", "");
    if (TextUtils.isEmpty(inputCode)) {//之前沒有設(shè)置過
     new AlertDialog.Builder(MoreFragment.this.getActivity())
       .setTitle("設(shè)置手勢密碼")
       .setMessage("是否現(xiàn)在設(shè)置手勢密碼")
       .setPositiveButton("確定", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
         UIUtils.toast("現(xiàn)在設(shè)置手勢密碼", false);
         sp.edit().putBoolean("isOpen", true).commit();
//           toggleMore.setChecked(true);
         //開啟新的activity:
         ((BaseActivity) MoreFragment.this.getActivity()).goToActivity(GestureEditActivity.class, null);
        }
       })
       .setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
         UIUtils.toast("取消了現(xiàn)在設(shè)置手勢密碼", false);
         sp.edit().putBoolean("isOpen", false).commit();
         toggleMore.setChecked(false);
        }
       })
       .show();
    } else {
     UIUtils.toast("開啟手勢密碼", false);
     sp.edit().putBoolean("isOpen", true).commit();
//      toggleMore.setChecked(true);
    }
   } else {
    UIUtils.toast("關(guān)閉了手勢密碼", false);
    sp.edit().putBoolean("isOpen", false).commit();
//     toggleMore.setChecked(false);
   }
  }
 });
}
private void resetGesture() {
 tvMoreReset.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
   boolean checked = toggleMore.isChecked();
   if (checked) {
    ((BaseActivity) MoreFragment.this.getActivity()).goToActivity(GestureEditActivity.class, null);
   } else {
    UIUtils.toast("手勢密碼操作已關(guān)閉,請開啟后再設(shè)置", false);
   }
  }
 });
}

GestureEditActivity:

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Html;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.atguigu.gesturelock.widget.GestureContentView;
import com.atguigu.gesturelock.widget.GestureDrawline;
import com.atguigu.gesturelock.widget.LockIndicator;
import com.atguigu.p2pinvest0828.R;
public class GestureEditActivity extends Activity implements View.OnClickListener {
 /**
  * 手機號碼
  */
 public static final String PARAM_PHONE_NUMBER = "PARAM_PHONE_NUMBER";
 /**
  * 意圖
  */
 public static final String PARAM_INTENT_CODE = "PARAM_INTENT_CODE";
 /**
  * 首次提示繪制手勢密碼,可以選擇跳過
  */
 public static final String PARAM_IS_FIRST_ADVICE = "PARAM_IS_FIRST_ADVICE";
 private TextView mTextTitle;
 private TextView mTextCancel;
 private LockIndicator mLockIndicator;
 private TextView mTextTip;
 private FrameLayout mGestureContainer;
 private GestureContentView mGestureContentView;
 private TextView mTextReset;
 private String mParamSetUpcode = null;
 private String mParamPhoneNumber;
 private boolean mIsFirstInput = true;
 private String mFirstPassword = null;
 private String mConfirmPassword = null;
 private int mParamIntentCode;
 private SharedPreferences mSharedPreferences = null;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_gesture_edit);
  setUpViews();
  setUpListeners();
 }
 private void setUpViews() {
  mTextTitle = (TextView) findViewById(R.id.text_title);
  mTextCancel = (TextView) findViewById(R.id.text_cancel);
  mTextReset = (TextView) findViewById(R.id.text_reset);
  mTextReset.setClickable(false);
  mLockIndicator = (LockIndicator) findViewById(R.id.lock_indicator);
  mTextTip = (TextView) findViewById(R.id.text_tip);
  mGestureContainer = (FrameLayout) findViewById(R.id.gesture_container);
  mSharedPreferences = this.getSharedPreferences("secret_protect", Context.MODE_PRIVATE);
  // 初始化一個顯示各個點的viewGroup
  mGestureContentView = new GestureContentView(this, false, "", new GestureDrawline.GestureCallBack() {
   @Override
   public void onGestureCodeInput(String inputCode) {
    if (!isInputPassValidate(inputCode)) {
     mTextTip.setText(Html.fromHtml("<font color='#c70c1e'>最少鏈接4個點, 請重新輸入</font>"));
     mGestureContentView.clearDrawlineState(0L);
     return;
    }
    if (mIsFirstInput) {
     mFirstPassword = inputCode;
     updateCodeList(inputCode);
     mGestureContentView.clearDrawlineState(0L);
     mTextReset.setClickable(true);
     mTextReset.setText(getString(R.string.reset_gesture_code));
    } else {
     if (inputCode.equals(mFirstPassword)) {
      Toast.makeText(GestureEditActivity.this, "設(shè)置成功", Toast.LENGTH_SHORT).show();
      mGestureContentView.clearDrawlineState(0L);
      GestureEditActivity.this.finish();
     } else {
      mTextTip.setText(Html.fromHtml("<font color='#c70c1e'>與上一次繪制不一致,請重新繪制</font>"));
      // 左右移動動畫
      Animation shakeAnimation = AnimationUtils.loadAnimation(GestureEditActivity.this, R.anim.shake);
      mTextTip.startAnimation(shakeAnimation);
      // 保持繪制的線,1.5秒后清除
      mGestureContentView.clearDrawlineState(1300L);
     }
    }
    mIsFirstInput = false;
   }
   @Override
   public void checkedSuccess() {
   }
   @Override
   public void checkedFail() {
   }
  });
  // 設(shè)置手勢解鎖顯示到哪個布局里面
  mGestureContentView.setParentView(mGestureContainer);
  updateCodeList("");
 }
 private void setUpListeners() {
  mTextCancel.setOnClickListener(this);
  mTextReset.setOnClickListener(this);
 }
 private void updateCodeList(String inputCode) {
  // 更新選擇的圖案
  mLockIndicator.setPath(inputCode);
  mSharedPreferences.edit().putString("inputCode",inputCode).commit();
  Log.e("TAG", "inputCode = " + inputCode);
 }
 @Override
 public void onClick(View v) {
  switch (v.getId()) {
   case R.id.text_cancel:
    this.finish();
    break;
   case R.id.text_reset:
    mIsFirstInput = true;
    updateCodeList("");
    mTextTip.setText(getString(R.string.set_gesture_pattern));
    break;
   default:
    break;
  }
 }
 private boolean isInputPassValidate(String inputPassword) {
  if (TextUtils.isEmpty(inputPassword) || inputPassword.length() < 4) {
   return false;
  }
  return true;
 }
}


我的界面中:

//判斷一下,是否開啟了手勢密碼。如果開啟:先輸入手勢密碼
SharedPreferences sp = this.getActivity().getSharedPreferences("secret_protect", Context.MODE_PRIVATE);
boolean isOpen = sp.getBoolean("isOpen", false);
if(isOpen){
 ((BaseActivity)this.getActivity()).goToActivity(GestureVerifyActivity.class,null);
 return;
}

GestureVerifyActivity:

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Html;
import android.text.TextUtils;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.atguigu.gesturelock.widget.GestureContentView;
import com.atguigu.gesturelock.widget.GestureDrawline;
import com.atguigu.p2pinvest0828.R;
public class GestureVerifyActivity extends Activity implements View.OnClickListener {
 /** 手機號碼*/
 public static final String PARAM_PHONE_NUMBER = "PARAM_PHONE_NUMBER";
 /** 意圖 */
 public static final String PARAM_INTENT_CODE = "PARAM_INTENT_CODE";
 private RelativeLayout mTopLayout;
 private TextView mTextTitle;
 private TextView mTextCancel;
 private ImageView mImgUserLogo;
 private TextView mTextPhoneNumber;
 private TextView mTextTip;
 private FrameLayout mGestureContainer;
 private GestureContentView mGestureContentView;
 private TextView mTextForget;
 private TextView mTextOther;
 private String mParamPhoneNumber;
 private long mExitTime = 0;
 private int mParamIntentCode;
 private SharedPreferences mSharedPreferences;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_gesture_verify);
  ObtainExtraData();
  setUpViews();
  setUpListeners();
 }
 private void ObtainExtraData() {
  mParamPhoneNumber = getIntent().getStringExtra(PARAM_PHONE_NUMBER);
  mParamIntentCode = getIntent().getIntExtra(PARAM_INTENT_CODE, 0);
  mSharedPreferences = this.getSharedPreferences("secret_protect", Context.MODE_PRIVATE);
 }
 private void setUpViews() {
  mTopLayout = (RelativeLayout) findViewById(R.id.top_layout);
  mTextTitle = (TextView) findViewById(R.id.text_title);
  mTextCancel = (TextView) findViewById(R.id.text_cancel);
  mImgUserLogo = (ImageView) findViewById(R.id.user_logo);
  mTextPhoneNumber = (TextView) findViewById(R.id.text_phone_number);
  mTextTip = (TextView) findViewById(R.id.text_tip);
  mGestureContainer = (FrameLayout) findViewById(R.id.gesture_container);
  mTextForget = (TextView) findViewById(R.id.text_forget_gesture);
  mTextOther = (TextView) findViewById(R.id.text_other_account);
  String inputCode = mSharedPreferences.getString("inputCode","1235789");
  // 初始化一個顯示各個點的viewGroup
  mGestureContentView = new GestureContentView(this, true, inputCode,
    new GestureDrawline.GestureCallBack() {
     @Override
     public void onGestureCodeInput(String inputCode) {
     }
     @Override
     public void checkedSuccess() {
      mGestureContentView.clearDrawlineState(0L);
      Toast.makeText(GestureVerifyActivity.this, "密碼正確", Toast.LENGTH_SHORT).show();
      GestureVerifyActivity.this.finish();
     }
     @Override
     public void checkedFail() {
      mGestureContentView.clearDrawlineState(1300L);
      mTextTip.setVisibility(View.VISIBLE);
      mTextTip.setText(Html.fromHtml("<font color='#c70c1e'>密碼錯誤</font>"));
      // 左右移動動畫
      Animation shakeAnimation = AnimationUtils.loadAnimation(GestureVerifyActivity.this, R.anim.shake);
      mTextTip.startAnimation(shakeAnimation);
     }
    });
  // 設(shè)置手勢解鎖顯示到哪個布局里面
  mGestureContentView.setParentView(mGestureContainer);
 }
 private void setUpListeners() {
  mTextCancel.setOnClickListener(this);
  mTextForget.setOnClickListener(this);
  mTextOther.setOnClickListener(this);
 }
 private String getProtectedMobile(String phoneNumber) {
  if (TextUtils.isEmpty(phoneNumber) || phoneNumber.length() < 11) {
   return "";
  }
  StringBuilder builder = new StringBuilder();
  builder.append(phoneNumber.subSequence(0,3));
  builder.append("****");
  builder.append(phoneNumber.subSequence(7,11));
  return builder.toString();
 }
 @Override
 public void onClick(View v) {
  switch (v.getId()) {
   case R.id.text_cancel:
    this.finish();
    break;
   default:
    break;
  }
 }
}

總結(jié)

以上所述是小編給大家介紹的Android手勢密碼--設(shè)置和校驗功能的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android中通知Notification使用實例(振動、燈光、聲音)

    Android中通知Notification使用實例(振動、燈光、聲音)

    這篇文章主要介紹了Android中通知Notification使用實例,實現(xiàn)振動,燈光,聲音等效果,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Android實現(xiàn)輪播效果的兩種方法

    Android實現(xiàn)輪播效果的兩種方法

    這篇文章主要為大家詳細介紹了Android實現(xiàn)輪播效果的兩種方法,使用ViewPager和SliderLayout第三方進行實現(xiàn)輪播,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android 安全加密:非對稱加密詳解

    Android 安全加密:非對稱加密詳解

    本文主要介紹Android 安全加密,非對稱加密的知識,這里整理了詳細的資料,及使用方法,有需要的小伙伴可以參考下
    2016-09-09
  • android如何獲取view在布局中的高度與寬度詳解

    android如何獲取view在布局中的高度與寬度詳解

    這篇文章主要給大家介紹了關(guān)于android如何獲取view在布局中的高度與寬度的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Android自定義鍵盤的實現(xiàn)(數(shù)字鍵盤和字母鍵盤)

    Android自定義鍵盤的實現(xiàn)(數(shù)字鍵盤和字母鍵盤)

    本篇文章主要介紹了Android自定義鍵盤的實現(xiàn)(數(shù)字鍵盤和字母鍵盤),具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • flutter監(jiān)聽app進入前后臺狀態(tài)的實現(xiàn)

    flutter監(jiān)聽app進入前后臺狀態(tài)的實現(xiàn)

    在開發(fā)app的過程中,我們經(jīng)常需要知道app處于前后臺的狀態(tài),本文主要介紹了flutter監(jiān)聽app進入前后臺狀態(tài)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Flutter 實現(xiàn)下拉刷新上拉加載的示例代碼

    Flutter 實現(xiàn)下拉刷新上拉加載的示例代碼

    這篇文章主要介紹了Flutter 實現(xiàn)下拉刷新上拉加載的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Android調(diào)試出現(xiàn)The selected device is incompatible問題解決

    Android調(diào)試出現(xiàn)The selected device is incompatible問題解決

    這篇文章主要介紹了Android調(diào)試出現(xiàn)The selected device is incompatible問題解決的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Android隨手筆記44之JSON數(shù)據(jù)解析

    Android隨手筆記44之JSON數(shù)據(jù)解析

    本文將主要介紹在Android開發(fā)中,如何在服務(wù)器端創(chuàng)建JSON數(shù)據(jù),以及如何在Android客戶端對JSON數(shù)據(jù)進行解析,對android json解析 相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • Android編程實現(xiàn)點擊EditText之外的控件隱藏軟鍵盤功能

    Android編程實現(xiàn)點擊EditText之外的控件隱藏軟鍵盤功能

    這篇文章主要介紹了Android編程實現(xiàn)點擊EditText之外的控件隱藏軟鍵盤功能,涉及Android控件的功能、屬性及相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06

最新評論