Android(安卓)studio登录界面之记住密码
16lz
2021-12-29
登录界面之记住密码
文章目录
- 登录界面之记住密码
- 文件存储的方式:
- 记住密码
- 存储数据
- 读取数据
- 完整代码
登录界面的博客: https://blog.csdn.net/genijmni/article/details/106240013欢迎大家前来一同学习。
效果如下:
上图为记住密码演示,下图为不记住密码演示
文件存储的方式:
- 把数据存储到文件中
- SharedPreferences存储
- SQLite数据库存储
这三种方式都能完成我们对数据的存储与读取,但配合记住密码的演示,我们采取第二种方式——SharedPreferences存储。
记住密码
在上一篇以及提到,记住密码需要一个控件:CheckBox,这是一个单选控件。
除了控件我们还需要利用SharedPreferences,进行数据的存储与读取。
private SharedPreferences preferences; //利用SharedPreferencespreferences = PreferenceManager.getDefaultSharedPreferences(this);private SharedPreferences .Editor editor;private CheckBox remember; //定义记住密码remember = (CheckBox) findViewById(R.id.remember);
完成这些控件和方法的定义后,我们需要理清楚逻辑:
- 将我输入在EditText的账号密码存储到SharedPreferences里
- 当我勾选记住密码时,下一次启动APP,自动读取SharedPreferences中的数据
- 当我取消勾选记住密码时,下一次启动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的启动动画,和软件的隐藏标题和隐藏系统状态栏是如何完成的。
更多相关文章
- Android之原生动作
- Android(安卓)MediaStore详解
- Android教程之MediaStore
- android中的sqlite数据库加密
- SwipeRefreshLayout 配合fragment 下拉刷新的使用,超级简单
- Android系统多媒体框架添加对.wma格式的支持
- 【Android】19.3 ContentProvider及安卓进一步封装后的相关类
- Android之Adapter用法总结
- mybatisplus的坑 insert标签insert into select无参数问题的解决