本文已参与「新人创作礼」活动,一起开启掘金创作之路。
背景技术
- SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据。
- 通常用来存储一些简单的配置信息。其存储位置通常在/data/data/<包名>/shared_prefs目录下。
- SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
XML布局构思
- 总体布局仍然是垂直的线性布局,方便使用
- 如下图放一个imageview,2个textview,2个edittext,1个checkbox,1个button
- 为了简洁美观,暂不做太多花里胡哨操作
登录界面效果图
Login.java
- 这里登录账号密码分别使用的是zhangsan和666666
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
input_username = (EditText) findViewById(R.id.input_username);
input_password = (EditText) findViewById(R.id.input_password);
remember = (CheckBox) findViewById(R.id.remember);
loginbtn = (Button) findViewById(R.id.login);
//获取sharedPreferences的实例
sharedPreferences= PreferenceManager.getDefaultSharedPreferences(this);
loginbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
name = input_username.getText().toString();
password = input_password.getText().toString();
editor=sharedPreferences.edit(); //获得sharedPreferences.Editor对象
String tempname= name;
String temppass= password;
if (name.equals("zhangsan") && password.equals("666666")) {
if (remember.isChecked()) {//如果勾选记住密码
editor.putString("Name", tempname); //保存用户名字符串key-value对
editor.putString("Password", temppass);
editor.putBoolean("remember_password", true); //保存勾选记住密码状态
Toast.makeText(getApplicationContext(), "恭喜您登录成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
intent.setClass(getApplicationContext(),list.class);
startActivity(intent);
} else {
input_password.setText("");
Toast.makeText(getApplicationContext(), "恭喜您登录成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
intent.setClass(getApplicationContext(),list.class);
startActivity(intent);
}
editor.apply();
}
if (!name.equals("zhangsan")){
Toast.makeText(getApplicationContext(),"输入的用户名错误,请重新输入!!!",Toast.LENGTH_SHORT).show();
input_username.setText("");
input_password.setText("");
}
if (!password.equals("666666")){
Toast.makeText(getApplicationContext(),"输入的密码错误,请重新输入!!!",Toast.LENGTH_SHORT).show();
input_username.setText("");
input_password.setText("");
}
}
});
exit.getInstance().addActivity(this);
//退出所有activity 主要是在别的界面使用的代码,这里没用到先提及。
exit.getInstance().addActivity(this);
}
- 文章至此实现了无数据库的登录界面通过sharedPreferences记住密码的简单功能