安全卫士4 ---密码的校验/dialog自定义布局




点击手机防盗 在界面跳转之前 弹出一个对话框dialog

1 dialog的自定义布局 
首先如图所示自定义一个布局
然后塞入dialog中代码如下

private void showPasswordInputDialog() {
    AlertDialog.Builder builder=new AlertDialog.Builder(this);
    final AlertDialog dialog=builder.create();
    View view=View.inflate(this,R.layout.dialog_input_password,null);
    //dialog.setView(view); //强自定义的布局文件设置给dialog
    dialog.setView(view,0,0,0,0);//设置边距为0,保证在低版本上运行没有问题
    Button btnOK= (Button) view.findViewById(R.id.btn_OK);
    Button btnCancel= (Button) view.findViewById(R.id.btn_cancel);
    final EditText etPassword= (EditText) view.findViewById(R.id.et_password);
    btnOK.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String password=etPassword.getText().toString();
            if(!TextUtils.isEmpty(password)){
                String savedPassword=mPref.getString("password", null);
                if(password.equals(savedPassword)){
                    Toast.makeText(HomeActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
                    dialog.dismiss();
                }else{
                    Toast.makeText(HomeActivity.this, "密码错误", Toast.LENGTH_SHORT).show();
                }
            }else{
                Toast.makeText(HomeActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
            }
        }
    });
    btnCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();//隐藏dialog
        }
    });
    dialog.show();

}

通过
View view=View.inflate(this,R.layout.dialog_input_password,null);
dialog.setView(view,0,0,0,0);
给dialog自定义view
view 后面四个参数分别是dialog后面的黑边厚度为0
当然dialog中填入了view 所以view中的button初始化就需要
Button btnOK=(。。。)view.findViewById(R.id.btn_OK);

2 密码的校验
在跳转之前有一个是否有密码存在的判定 如下

/*
显示密码弹窗
*/
private void showPasswordDialog() {
    //判断是否设置密码
    String savedPassword=mPref.getString("password", null);
    if(!TextUtils.isEmpty(savedPassword)){
        showPasswordInputDialog();
    }else{
        //如果没有设置过,弹出设置密码的弹窗
        showPasswordSetDialog();
    }
}
当没有密码存在的时候跳转到密码设置页面


/*
* 设置密码的弹窗
* */
private void showPasswordSetDialog() {
    AlertDialog.Builder builder=new AlertDialog.Builder(this);
    final AlertDialog dialog=builder.create();
    View view=View.inflate(this,R.layout.dialog_set_password,null);
    //dialog.setView(view); //强自定义的布局文件设置给dialog
    dialog.setView(view,0,0,0,0);//设置边距为0,保证在低版本上运行没有问题
    Button btnOK= (Button) view.findViewById(R.id.btn_OK);
    Button btnCancel= (Button) view.findViewById(R.id.btn_cancel);
    final EditText etPassword= (EditText) view.findViewById(R.id.et_password);
    final EditText etPasswordConfirm= (EditText) view.findViewById(R.id.et_password_confirm);
    btnOK.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //当用户点击确定
            String password=etPassword.getText().toString();
            String passwordConfirm=etPasswordConfirm.getText().toString();
            if(!TextUtils.isEmpty(password)&&!passwordConfirm.isEmpty()){
                //判断是否为空串
                if(password.equals(passwordConfirm)){
                    Toast.makeText(HomeActivity.this, "登陆成功!", Toast.LENGTH_SHORT).show();
                    mPref.edit().putString("password",password).commit();
                    dialog.dismiss();
                }else{
                    Toast.makeText(HomeActivity.this, "两次密码不一致!", Toast.LENGTH_SHORT).show();
                }
            }else{
                Toast.makeText(HomeActivity.this, "请输入密码!", Toast.LENGTH_SHORT).show();
            }
        }
    });
    btnCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();//隐藏dialog
        }
    });
    dialog.show();
}
这里面就非常清楚的显示第一次密码的写入
当两个密码长度不为空且相同的时候就保存密码到SharePerference中

调用此方法提交

mPref.edit().putString("password",password).commit();

把password中的内容提交到key为“password”

所以取出来就是

String savedPassword=mPref.getString("password", null);

这里判断文本是否为空使用的是

TextUtils.isEmpty(savedPassword)

比较简单的一课!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值