<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓筆記俠

      專注安卓開發

      導航

      Android手勢密碼--設置和校驗

       1 private void setGesturePassword() {
       2     toggleMore.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
       3         @Override
       4         public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
       5             if (isChecked) {
       6 //                    UIUtils.toast("開啟了手勢密碼", false);
       7 //                    sp.edit().putBoolean("isOpen", true).commit();
       8                 String inputCode = sp.getString("inputCode", "");
       9                 if (TextUtils.isEmpty(inputCode)) {//之前沒有設置過
      10                     new AlertDialog.Builder(MoreFragment.this.getActivity())
      11                             .setTitle("設置手勢密碼")
      12                             .setMessage("是否現在設置手勢密碼")
      13                             .setPositiveButton("確定", new DialogInterface.OnClickListener() {
      14                                 @Override
      15                                 public void onClick(DialogInterface dialog, int which) {
      16                                     UIUtils.toast("現在設置手勢密碼", false);
      17                                     sp.edit().putBoolean("isOpen", true).commit();
      18 //                                            toggleMore.setChecked(true);
      19                                     //開啟新的activity:
      20                                     ((BaseActivity) MoreFragment.this.getActivity()).goToActivity(GestureEditActivity.class, null);
      21                                 }
      22                             })
      23                             .setNegativeButton("取消", new DialogInterface.OnClickListener() {
      24                                 @Override
      25                                 public void onClick(DialogInterface dialog, int which) {
      26                                     UIUtils.toast("取消了現在設置手勢密碼", false);
      27                                     sp.edit().putBoolean("isOpen", false).commit();
      28                                     toggleMore.setChecked(false);
      29 
      30                                 }
      31                             })
      32                             .show();
      33                 } else {
      34                     UIUtils.toast("開啟手勢密碼", false);
      35                     sp.edit().putBoolean("isOpen", true).commit();
      36 //                        toggleMore.setChecked(true);
      37                 }
      38             } else {
      39                 UIUtils.toast("關閉了手勢密碼", false);
      40                 sp.edit().putBoolean("isOpen", false).commit();
      41 //                    toggleMore.setChecked(false);
      42 
      43             }
      44         }
      45     });
      46 }
      47 
      48 private void resetGesture() {
      49     tvMoreReset.setOnClickListener(new View.OnClickListener() {
      50         @Override
      51         public void onClick(View v) {
      52             boolean checked = toggleMore.isChecked();
      53             if (checked) {
      54                 ((BaseActivity) MoreFragment.this.getActivity()).goToActivity(GestureEditActivity.class, null);
      55             } else {
      56                 UIUtils.toast("手勢密碼操作已關閉,請開啟后再設置", false);
      57             }
      58         }
      59     });
      60 }

      GestureEditActivity:

        1 import android.app.Activity;
        2 import android.content.Context;
        3 import android.content.SharedPreferences;
        4 import android.os.Bundle;
        5 import android.text.Html;
        6 import android.text.TextUtils;
        7 import android.util.Log;
        8 import android.view.View;
        9 import android.view.animation.Animation;
       10 import android.view.animation.AnimationUtils;
       11 import android.widget.FrameLayout;
       12 import android.widget.TextView;
       13 import android.widget.Toast;
       14 
       15 import com.atguigu.gesturelock.widget.GestureContentView;
       16 import com.atguigu.gesturelock.widget.GestureDrawline;
       17 import com.atguigu.gesturelock.widget.LockIndicator;
       18 import com.atguigu.p2pinvest0828.R;
       19 
       20 public class GestureEditActivity extends Activity implements View.OnClickListener {
       21     /**
       22      * 手機號碼
       23      */
       24     public static final String PARAM_PHONE_NUMBER = "PARAM_PHONE_NUMBER";
       25     /**
       26      * 意圖
       27      */
       28     public static final String PARAM_INTENT_CODE = "PARAM_INTENT_CODE";
       29     /**
       30      * 首次提示繪制手勢密碼,可以選擇跳過
       31      */
       32     public static final String PARAM_IS_FIRST_ADVICE = "PARAM_IS_FIRST_ADVICE";
       33     private TextView mTextTitle;
       34     private TextView mTextCancel;
       35     private LockIndicator mLockIndicator;
       36     private TextView mTextTip;
       37     private FrameLayout mGestureContainer;
       38     private GestureContentView mGestureContentView;
       39     private TextView mTextReset;
       40     private String mParamSetUpcode = null;
       41     private String mParamPhoneNumber;
       42     private boolean mIsFirstInput = true;
       43     private String mFirstPassword = null;
       44     private String mConfirmPassword = null;
       45     private int mParamIntentCode;
       46 
       47     private SharedPreferences mSharedPreferences = null;
       48 
       49     @Override
       50     public void onCreate(Bundle savedInstanceState) {
       51         super.onCreate(savedInstanceState);
       52         setContentView(R.layout.activity_gesture_edit);
       53         setUpViews();
       54         setUpListeners();
       55     }
       56 
       57     private void setUpViews() {
       58         mTextTitle = (TextView) findViewById(R.id.text_title);
       59         mTextCancel = (TextView) findViewById(R.id.text_cancel);
       60         mTextReset = (TextView) findViewById(R.id.text_reset);
       61         mTextReset.setClickable(false);
       62         mLockIndicator = (LockIndicator) findViewById(R.id.lock_indicator);
       63         mTextTip = (TextView) findViewById(R.id.text_tip);
       64         mGestureContainer = (FrameLayout) findViewById(R.id.gesture_container);
       65         mSharedPreferences = this.getSharedPreferences("secret_protect", Context.MODE_PRIVATE);
       66         // 初始化一個顯示各個點的viewGroup
       67         mGestureContentView = new GestureContentView(this, false, "", new GestureDrawline.GestureCallBack() {
       68             @Override
       69             public void onGestureCodeInput(String inputCode) {
       70 
       71                 if (!isInputPassValidate(inputCode)) {
       72                     mTextTip.setText(Html.fromHtml("<font color='#c70c1e'>最少鏈接4個點, 請重新輸入</font>"));
       73                     mGestureContentView.clearDrawlineState(0L);
       74 
       75                     return;
       76                 }
       77 
       78                 if (mIsFirstInput) {
       79                     mFirstPassword = inputCode;
       80 
       81                     updateCodeList(inputCode);
       82 
       83                     mGestureContentView.clearDrawlineState(0L);
       84                     mTextReset.setClickable(true);
       85                     mTextReset.setText(getString(R.string.reset_gesture_code));
       86                 } else {
       87 
       88                     if (inputCode.equals(mFirstPassword)) {
       89 
       90                         Toast.makeText(GestureEditActivity.this, "設置成功", Toast.LENGTH_SHORT).show();
       91                         mGestureContentView.clearDrawlineState(0L);
       92                         GestureEditActivity.this.finish();
       93                     } else {
       94                         mTextTip.setText(Html.fromHtml("<font color='#c70c1e'>與上一次繪制不一致,請重新繪制</font>"));
       95 
       96                         // 左右移動動畫
       97                         Animation shakeAnimation = AnimationUtils.loadAnimation(GestureEditActivity.this, R.anim.shake);
       98                         mTextTip.startAnimation(shakeAnimation);
       99 
      100                         // 保持繪制的線,1.5秒后清除
      101                         mGestureContentView.clearDrawlineState(1300L);
      102                     }
      103                 }
      104 
      105                 mIsFirstInput = false;
      106             }
      107 
      108             @Override
      109             public void checkedSuccess() {
      110 
      111             }
      112 
      113             @Override
      114             public void checkedFail() {
      115 
      116             }
      117         });
      118 
      119         // 設置手勢解鎖顯示到哪個布局里面
      120         mGestureContentView.setParentView(mGestureContainer);
      121 
      122         updateCodeList("");
      123     }
      124 
      125     private void setUpListeners() {
      126         mTextCancel.setOnClickListener(this);
      127         mTextReset.setOnClickListener(this);
      128     }
      129 
      130     private void updateCodeList(String inputCode) {
      131 
      132         // 更新選擇的圖案
      133         mLockIndicator.setPath(inputCode);
      134         mSharedPreferences.edit().putString("inputCode",inputCode).commit();
      135         Log.e("TAG", "inputCode = " + inputCode);
      136     }
      137 
      138     @Override
      139     public void onClick(View v) {
      140 
      141         switch (v.getId()) {
      142             case R.id.text_cancel:
      143                 this.finish();
      144                 break;
      145 
      146             case R.id.text_reset:
      147                 mIsFirstInput = true;
      148                 updateCodeList("");
      149                 mTextTip.setText(getString(R.string.set_gesture_pattern));
      150                 break;
      151 
      152 
      153             default:
      154                 break;
      155         }
      156     }
      157 
      158     private boolean isInputPassValidate(String inputPassword) {
      159 
      160         if (TextUtils.isEmpty(inputPassword) || inputPassword.length() < 4) {
      161             return false;
      162         }
      163 
      164         return true;
      165     }
      166 }
      View Code

       

      我的界面中:

      //判斷一下,是否開啟了手勢密碼。如果開啟:先輸入手勢密碼
      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:

        1 import android.app.Activity;
        2 import android.content.Context;
        3 import android.content.SharedPreferences;
        4 import android.os.Bundle;
        5 import android.text.Html;
        6 import android.text.TextUtils;
        7 import android.view.View;
        8 import android.view.animation.Animation;
        9 import android.view.animation.AnimationUtils;
       10 import android.widget.FrameLayout;
       11 import android.widget.ImageView;
       12 import android.widget.RelativeLayout;
       13 import android.widget.TextView;
       14 import android.widget.Toast;
       15 
       16 import com.atguigu.gesturelock.widget.GestureContentView;
       17 import com.atguigu.gesturelock.widget.GestureDrawline;
       18 import com.atguigu.p2pinvest0828.R;
       19 
       20 public class GestureVerifyActivity extends Activity implements View.OnClickListener {
       21     /** 手機號碼*/
       22     public static final String PARAM_PHONE_NUMBER = "PARAM_PHONE_NUMBER";
       23     /** 意圖 */
       24     public static final String PARAM_INTENT_CODE = "PARAM_INTENT_CODE";
       25     private RelativeLayout mTopLayout;
       26     private TextView mTextTitle;
       27     private TextView mTextCancel;
       28     private ImageView mImgUserLogo;
       29     private TextView mTextPhoneNumber;
       30     private TextView mTextTip;
       31     private FrameLayout mGestureContainer;
       32     private GestureContentView mGestureContentView;
       33     private TextView mTextForget;
       34     private TextView mTextOther;
       35     private String mParamPhoneNumber;
       36     private long mExitTime = 0;
       37     private int mParamIntentCode;
       38     private SharedPreferences mSharedPreferences;
       39 
       40     @Override
       41     public void onCreate(Bundle savedInstanceState) {
       42         super.onCreate(savedInstanceState);
       43 
       44         setContentView(R.layout.activity_gesture_verify);
       45 
       46         ObtainExtraData();
       47 
       48         setUpViews();
       49 
       50         setUpListeners();
       51     }
       52 
       53     private void ObtainExtraData() {
       54         mParamPhoneNumber = getIntent().getStringExtra(PARAM_PHONE_NUMBER);
       55         mParamIntentCode = getIntent().getIntExtra(PARAM_INTENT_CODE, 0);
       56         mSharedPreferences = this.getSharedPreferences("secret_protect", Context.MODE_PRIVATE);
       57     }
       58 
       59     private void setUpViews() {
       60         mTopLayout = (RelativeLayout) findViewById(R.id.top_layout);
       61         mTextTitle = (TextView) findViewById(R.id.text_title);
       62         mTextCancel = (TextView) findViewById(R.id.text_cancel);
       63         mImgUserLogo = (ImageView) findViewById(R.id.user_logo);
       64         mTextPhoneNumber = (TextView) findViewById(R.id.text_phone_number);
       65         mTextTip = (TextView) findViewById(R.id.text_tip);
       66         mGestureContainer = (FrameLayout) findViewById(R.id.gesture_container);
       67         mTextForget = (TextView) findViewById(R.id.text_forget_gesture);
       68         mTextOther = (TextView) findViewById(R.id.text_other_account);
       69 
       70         String inputCode = mSharedPreferences.getString("inputCode","1235789");
       71         // 初始化一個顯示各個點的viewGroup
       72         mGestureContentView = new GestureContentView(this, true, inputCode,
       73                 new GestureDrawline.GestureCallBack() {
       74 
       75                     @Override
       76                     public void onGestureCodeInput(String inputCode) {
       77 
       78                     }
       79 
       80                     @Override
       81                     public void checkedSuccess() {
       82 
       83                         mGestureContentView.clearDrawlineState(0L);
       84 
       85                         Toast.makeText(GestureVerifyActivity.this, "密碼正確", Toast.LENGTH_SHORT).show();
       86 
       87                         GestureVerifyActivity.this.finish();
       88                     }
       89 
       90                     @Override
       91                     public void checkedFail() {
       92 
       93                         mGestureContentView.clearDrawlineState(1300L);
       94                         mTextTip.setVisibility(View.VISIBLE);
       95                         mTextTip.setText(Html.fromHtml("<font color='#c70c1e'>密碼錯誤</font>"));
       96 
       97                         // 左右移動動畫
       98                         Animation shakeAnimation = AnimationUtils.loadAnimation(GestureVerifyActivity.this, R.anim.shake);
       99                         mTextTip.startAnimation(shakeAnimation);
      100                     }
      101                 });
      102 
      103         // 設置手勢解鎖顯示到哪個布局里面
      104         mGestureContentView.setParentView(mGestureContainer);
      105     }
      106 
      107     private void setUpListeners() {
      108         mTextCancel.setOnClickListener(this);
      109         mTextForget.setOnClickListener(this);
      110         mTextOther.setOnClickListener(this);
      111     }
      112 
      113     private String getProtectedMobile(String phoneNumber) {
      114 
      115         if (TextUtils.isEmpty(phoneNumber) || phoneNumber.length() < 11) {
      116             return "";
      117         }
      118 
      119         StringBuilder builder = new StringBuilder();
      120         builder.append(phoneNumber.subSequence(0,3));
      121         builder.append("****");
      122         builder.append(phoneNumber.subSequence(7,11));
      123 
      124         return builder.toString();
      125     }
      126 
      127 
      128 
      129     @Override
      130     public void onClick(View v) {
      131 
      132         switch (v.getId()) {
      133             case R.id.text_cancel:
      134                 this.finish();
      135                 break;
      136 
      137             default:
      138                 break;
      139         }
      140     }
      141 }
      View Code

       

      posted on 2018-05-07 23:44  安卓筆記俠  閱讀(2151)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 中文字幕国产精品综合| 亚洲国产色婷婷久久99精品91| 亚洲狠狠婷婷综合久久久| 热99久久这里只有精品| 精品一区二区免费不卡| 欧美成人www免费全部网站| 国产一区二区三区内射高清| 大肉大捧一进一出好爽视频mba | 色婷婷综合久久久久中文字幕| 久操资源站| 午夜福利高清在线观看| 国产大尺度一区二区视频| 亚洲综合小说另类图片五月天| 国产福利社区一区二区| 久久久精品94久久精品| 成人av一区二区亚洲精| 中文字幕在线看视频一区二区三区| 亚洲欧洲精品日韩av| 日本人妻巨大乳挤奶水免费| 性欧美VIDEOFREE高清大喷水 | 中文字幕v亚洲日本在线电影| 亚洲av日韩在线资源| 免费无码中文字幕A级毛片| 精品国产午夜福利在线观看 | 国产精品免费第一区二区| 日日摸夜夜添夜夜添国产三级| 国产精品久久久久久久久久直播| 四虎国产精品永久在线| 凉山| 国产精品三级一区二区三区| 中文午夜乱理片无码| 中文www天堂| 丰满人妻熟妇乱精品视频| 高清自拍亚洲精品二区| 饶河县| 国产亚洲人成网站在线观看| 精品午夜福利在线观看| 亚洲欧美综合一区二区三区| 高清无码爆乳潮喷在线观看| 午夜天堂一区人妻| 无码三级av电影在线观看|