【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">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="60dp">

        <TextView
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:textSize="18sp"
            android:text="账号:"/>

        <EditText
            android:id="@+id/account"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_gravity="center_vertical"/>
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="60dp">

        <TextView
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:textSize="18sp"
            android:text="密码:"/>

        <EditText
            android: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>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        
        <CheckBox
            android:id="@+id/remrember_pass"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:text="记住密码"/>
    </LinearLayout>
    <Button
        android: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;

    @Override
    protected 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() {
            @Override
            public 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......

猜你喜欢

转载自blog.csdn.net/Tir_zhang/article/details/129786269