Android studio登录界面之记住密码

登录界面之记住密码


登录界面的博客: https://blog.csdn.net/genijmni/article/details/106240013欢迎大家前来一同学习。
效果如下:
记住密码
上图为记住密码演示,下图为不记住密码演示

不记住密码

文件存储的方式:

  1. 把数据存储到文件中
  2. SharedPreferences存储
  3. SQLite数据库存储

这三种方式都能完成我们对数据的存储与读取,但配合记住密码的演示,我们采取第二种方式——SharedPreferences存储。

记住密码

在上一篇以及提到,记住密码需要一个控件:CheckBox,这是一个单选控件。
除了控件我们还需要利用SharedPreferences,进行数据的存储与读取。

private SharedPreferences preferences;  //利用SharedPreferences
preferences = PreferenceManager.getDefaultSharedPreferences(this);
private SharedPreferences .Editor editor;
private CheckBox remember;  //定义记住密码
remember = (CheckBox) findViewById(R.id.remember);

完成这些控件和方法的定义后,我们需要理清楚逻辑:

  1. 将我输入在EditText的账号密码存储到SharedPreferences里
  2. 当我勾选记住密码时,下一次启动APP,自动读取SharedPreferences中的数据
  3. 当我取消勾选记住密码时,下一次启动App,取消读取SharedPreferences中的数据

存储数据

boolean isRemember = preferences.getBoolean("remember_password",false);
if (isRemember){
    String Name = preferences.getString("Name","");
    String Password = preferences.getString("Password","");
    NameEdit.setText(Name);
    PasswordEdit.setText(Password);
    remember.setChecked(true);
}

这一步将输入的数据存储到SharedPreferences,不管是否能够登录。

读取数据

这里利用==if{}else{}==逻辑,完成是否读取数据的操作

editor = preferences.edit();
if(remember.isChecked()){
    editor.putBoolean("remember_password",true);
    editor.putString("Name",Name);
    editor.putString("Password",Password);
}else{editor.clear();}
editor.apply();

isChecked为是否勾选了记住密码,当勾选了。下次启动App后,完成记住项目,若没有勾选,则不启动读取。
效果如下:
记住密码
上图为记住密码演示,下图为不记住密码演示
不记住密码

完整代码

public class MainActivity extends AppCompatActivity {
    private SharedPreferences preferences;
    private SharedPreferences .Editor editor;
    private EditText NameEdit;
    private EditText PasswordEdit;
    private Button login;
    private CheckBox remember;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        preferences = PreferenceManager.getDefaultSharedPreferences(this);
        NameEdit = (EditText) findViewById(R.id.Name);
        PasswordEdit = (EditText) findViewById(R.id.Password);
        remember = (CheckBox) findViewById(R.id.remember);
        login = (Button) findViewById(R.id.login);
        boolean isRemember = preferences.getBoolean("remember_password",false);
        if (isRemember){
            String Name = preferences.getString("Name","");
            String Password = preferences.getString("Password","");
            NameEdit.setText(Name);
            PasswordEdit.setText(Password);
            remember.setChecked(true);
        }
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String Name = NameEdit.getText().toString();
                String Password = PasswordEdit.getText().toString();
                if (TextUtils.isEmpty(NameEdit.getText().toString()) || TextUtils.isEmpty(PasswordEdit.getText().toString())) {
                    Toast.makeText(MainActivity.this, "用户名或者密码不能为空", Toast.LENGTH_SHORT).show();
                } else
                if(Name.equals("CSDN")&&Password.equals("12345678")){
                    editor = preferences.edit();
                    if(remember.isChecked()){
                        editor.putBoolean("remember_password",true);
                        editor.putString("Name",Name);
                        editor.putString("Password",Password);
                    }else{editor.clear();}
                    editor.apply();
                    Intent intent = new Intent(MainActivity.this,Receiver.class);
                    intent.putExtra("Name",Name);
                    intent.putExtra("Password",Password);
                    startActivity(intent);
                    Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
                    finish();
                }else {Toast.makeText(MainActivity.this,"账号密码错误",Toast.LENGTH_SHORT).show();}
            }
        });
    }
}

下一次讨论一下APP的启动动画,和软件的隐藏标题和隐藏系统状态栏是如何完成的。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值