【Android入门到项目实战--4.3】—— 登录界面实现记住密码功能(SharedPreferences存储实现)
目录
1、编辑登录界面
2、实现数据存储
3、效果
本篇文章主要讲解如何实现记住密码功能。
(注意:这里实现的记住密码只是简单的示例,正式项目需要结合加密算法对密码进行保护)
效果如下:可选择记住密码,下次登录自动输出账号密码。
1、编辑登录界面
首先新建项目:BroadcastBestPractice。
编辑登录界面的布局,activity_main.xml文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="60dp"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textSize="18sp"android:text="账号:"/><EditTextandroid:id="@+id/account"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:layout_gravity="center_vertical"/></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="60dp"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:textSize="18sp"android:text="密码:"/><EditTextandroid:id="@+id/password"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:layout_gravity="center_vertical"android:inputType="textPassword"/></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"><CheckBoxandroid:id="@+id/remrember_pass"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="18sp"android:text="记住密码"/></LinearLayout><Buttonandroid:id="@+id/login"android:layout_width="match_parent"android:layout_height="60dp"android:text="登录"/></LinearLayout>
效果如下:
2、实现数据存储
修改MainActivity中的代码,如下:
首先在onCreate方法中获取SharedPreferences对象,然后调用它的getBoolean()方法去获取remember_password这个键对应的值,默认为false。
接着判断remember_password对应的值是否为true,如果为true则表示勾选了记住密码,从SharedPreferences存储中获取账号密码,填入到文本框中。
再接着是登录的点击事件,先获取文本框的内容,如果账号和密码对应的上并且勾选了记住密码,则将键写入到SharedPreferences存储中,如果没有勾选则清除。
public class MainActivity extends AppCompatActivity {private SharedPreferences pref;private SharedPreferences.Editor editor;private EditText accountEdit;private EditText passwordEdit;private Button login;private CheckBox rememberPass;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);accountEdit = findViewById(R.id.account);passwordEdit = findViewById(R.id.password);login = findViewById(R.id.login);rememberPass = findViewById(R.id.remrember_pass);pref = PreferenceManager.getDefaultSharedPreferences(this);boolean isRemember = pref.getBoolean("remember_password",false);if(isRemember){//将账号密码设置到文本框String account = pref.getString("account","");String password = pref.getString("password","");accountEdit.setText(account);passwordEdit.setText(password);rememberPass.setChecked(true);}login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String account = accountEdit.getText().toString();String password = passwordEdit.getText().toString();//如果账号是940107148,且密码是123456,就认为登录成功if(account.equals("940107148")&&password.equals("123456")){editor = pref.edit();if(rememberPass.isChecked()){editor.putBoolean("remember_password",true);editor.putString("account",account);editor.putString("password",password);}else{editor.clear();}editor.apply();Toast.makeText(MainActivity.this, "登录成功!", Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this, "密码错误!", Toast.LENGTH_SHORT).show();}}});}
}
3、效果
不勾选记住密码,返回程序,则文本框全部清除。
勾选记住密码,返回程序,再进入程序文本框会保存上次输入的内容。
希望本文章对你有帮助,如果你对Android开发感兴趣,请持续关注本专栏,帮助你从入门到项目实战,你将收获:Android基础开发、各种经典功能实现、项目实战、开发自己的APP、将APP上传应用商店、靠广告赚钱等等,持续更新ing......