Android制作登录页面并且记住账号密码功能的实现代码

下面是“Android制作登录页面并且记住账号密码功能的实现代码”完整攻略:

1. 编写登录页面布局

首先需要创建一个登录页面的布局,可以使用EditTextButton等组件实现,同时建议使用LinearLayoutRelativeLayout等布局组件实现页面排版。

示例代码:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/username_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"/>

    <EditText
        android:id="@+id/password_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword"/>

    <CheckBox
        android:id="@+id/remember_cb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="记住密码"/>

    <Button
        android:id="@+id/login_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"/>
</LinearLayout>

2. 处理登录逻辑

在实现登录功能之前,需要先将界面的各控件引用到Java代码中,通过findViewById方法获取它们的引用(注意此处的R.id.前缀)。然后在登录按钮的OnClickListener中编写登录逻辑,包括读取输入的用户名和密码,验证用户名和密码是否正确等操作。实现完登录逻辑之后,可以在登录成功后根据勾选状态来决定是否存储用户名和密码。

示例代码:

public class LoginActivity extends AppCompatActivity {

    private EditText mUsernameEt;
    private EditText mPasswordEt;
    private CheckBox mRememberCb;

    private SharedPreferences mSharedPreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        // 获取控件引用
        mUsernameEt = findViewById(R.id.username_et);
        mPasswordEt = findViewById(R.id.password_et);
        mRememberCb = findViewById(R.id.remember_cb);

        // 获取SharedPreferences对象
        mSharedPreferences = getSharedPreferences("user_info", MODE_PRIVATE);

        // 设置登录按钮的OnClickListener
        findViewById(R.id.login_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取输入的用户名和密码
                String username = mUsernameEt.getText().toString();
                String password = mPasswordEt.getText().toString();

                // TODO: 验证用户名和密码是否正确,此处略去

                // 根据是否勾选“记住密码”存储用户名和密码
                if (mRememberCb.isChecked()) {
                    SharedPreferences.Editor editor = mSharedPreferences.edit();
                    editor.putString("username", username);
                    editor.putString("password", password);
                    editor.apply();
                } else {
                    // 不记住密码则清除SharedPreferences存储的用户名和密码
                    SharedPreferences.Editor editor = mSharedPreferences.edit();
                    editor.remove("username");
                    editor.remove("password");
                    editor.apply();
                }

                // 登录成功后跳转到下一个页面
                Intent intent = new Intent(LoginActivity.this, NextActivity.class);
                startActivity(intent);
                finish();
            }
        });

        // 如果SharedPreferences中有存储的用户名和密码,则自动填充
        String username = mSharedPreferences.getString("username", "");
        String password = mSharedPreferences.getString("password", "");
        mUsernameEt.setText(username);
        mPasswordEt.setText(password);
    }
}

在上述代码中,SharedPreferences是用来存储数据的类,它可以将数据以键-值对的形式存储在应用程序的本地存储空间中。在这个示例中,我们通过getSharedPreferences方法获取了一个名为“user_info”的SharedPreferences对象,并在登录成功之后根据勾选状态来存储/清除用户名和密码。

3. 处理记住密码功能

在上面的示例代码中已经演示了如何根据勾选状态来存储和清除用户名和密码,接下来需要在应用程序启动时判断SharedPreferences中是否存在存储的用户名和密码,如果存在,则自动填充到对应的EditText中。

示例代码:

public class LoginActivity extends AppCompatActivity {

    private EditText mUsernameEt;
    private EditText mPasswordEt;
    private CheckBox mRememberCb;

    private SharedPreferences mSharedPreferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        // 获取控件引用
        mUsernameEt = findViewById(R.id.username_et);
        mPasswordEt = findViewById(R.id.password_et);
        mRememberCb = findViewById(R.id.remember_cb);

        // 获取SharedPreferences对象
        mSharedPreferences = getSharedPreferences("user_info", MODE_PRIVATE);

        // 设置登录按钮的OnClickListener
        findViewById(R.id.login_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取输入的用户名和密码
                String username = mUsernameEt.getText().toString();
                String password = mPasswordEt.getText().toString();

                // TODO: 验证用户名和密码是否正确,此处略去

                // 根据是否勾选“记住密码”存储用户名和密码
                if (mRememberCb.isChecked()) {
                    SharedPreferences.Editor editor = mSharedPreferences.edit();
                    editor.putString("username", username);
                    editor.putString("password", password);
                    editor.apply();
                } else {
                    // 不记住密码则清除SharedPreferences存储的用户名和密码
                    SharedPreferences.Editor editor = mSharedPreferences.edit();
                    editor.remove("username");
                    editor.remove("password");
                    editor.apply();
                }

                // 登录成功后跳转到下一个页面
                Intent intent = new Intent(LoginActivity.this, NextActivity.class);
                startActivity(intent);
                finish();
            }
        });

        // 如果SharedPreferences中有存储的用户名和密码,则自动填充
        String username = mSharedPreferences.getString("username", "");
        String password = mSharedPreferences.getString("password", "");
        mUsernameEt.setText(username);
        mPasswordEt.setText(password);

        // 如果用户名和密码都不为空,则自动勾选“记住密码”
        if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)) {
            mRememberCb.setChecked(true);
        }
    }
}

上面的示例代码中,在onCreate方法中增加了一段判断:如果用户名和密码都不为空,则自动勾选“记住密码”。这样即使在应用程序关闭后重新启动,用户也可以保留之前勾选的状态。

总结

通过上述示例代码,我们可以实现一个登录页面并且记住账号密码。其中最关键的就是使用SharedPreferences类来存储用户名和密码,实现记住密码的功能。

另外,可以根据具体业务需求对登录页面进行更多的扩展和优化,比如加入验证码、使用第三方登录等,以提高用户体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android制作登录页面并且记住账号密码功能的实现代码 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • React-View-UI组件库封装Loading加载中源码

    请允许我详细地讲解一下“React-View-UI组件库封装Loading加载中源码”的完整攻略。 1. 基本思路 在 React-View-UI 组件库中,加载中动画是常见的 UI 组件。为了提高代码的复用性,我们需要将这些常用组件封装为可复用的组件。本篇攻略将重点讲解如何封装一个 Loading 加载中动画的组件。 封装 Loading 组件的基本思路如…

    other 2023年6月25日
    00
  • 最全Windows 10高清锁屏壁纸下载 附网盘下载地址

    最全Windows 10高清锁屏壁纸下载攻略 Windows 10提供了许多精美的高清锁屏壁纸供用户选择。本攻略将详细介绍如何下载这些壁纸,并提供附带的网盘下载地址。 步骤一:打开Windows 10锁屏设置 首先,我们需要打开Windows 10的锁屏设置页面。可以通过以下步骤完成: 在任务栏上找到并点击Windows图标,打开开始菜单。 在开始菜单中,点…

    other 2023年8月4日
    00
  • java实现PPT转PDF出现中文乱码问题的解决方法

    下面我将为你详细讲解“Java实现PPT转PDF出现中文乱码问题的解决方法”的完整攻略。 问题描述 在使用Java实现PPT转PDF的过程中,由于PDF文件的编码格式为Unicode,而PPT文件的编码格式是GB2312或UTF-8,所以在处理中文字符的时候就可能会出现中文乱码的问题。 解决方法 方法一:修改字体 可以通过修改PDF文档的字体来解决中文乱码问…

    other 2023年6月27日
    00
  • ug怎么自定义工具栏? ug新建工具栏的教程

    下面是关于“UG怎么自定义工具栏?UG新建工具栏的教程”的完整攻略。 1. 创建新的工具栏 要创建新的工具栏,你需要按照以下步骤进行操作: 打开 UG 软件后,点击菜单栏中的“工具”(Tools)选项,在下拉菜单中选择“自定义”(Customize)选项。 在“自定义”对话框中,点击“新建”(New)按钮,选择“工具栏”(Toolbar)。 在弹出的“工具栏…

    other 2023年6月25日
    00
  • 如何从visualstudio2019禁用perfwatson2.exe

    如何从Visual Studio 2019禁用PerfWatson2.exe PerfWatson2.exe是Visual Studio 2019的一个性能监视器,它可以帮助开发人员识别和解决应用程序中的性能问题。但是,有时PerfWatson2.exe可能会导致计算机变慢或出现其他问题。在这种情况下,您可能需要禁用PerfWatson2.exe。以下是一个…

    other 2023年5月9日
    00
  • 详解基于 Nuxt 的 Vue.js 服务端渲染实践

    非常感谢您对我所写的“详解基于 Nuxt 的 Vue.js 服务端渲染实践”的兴趣。下面是完整的攻略: 什么是服务端渲染(SSR) 服务器端渲染是将动态内容生成到HTML、CSS等前端文件中(称为”Server Side Rendering”(SSR)),然后再输出到前端浏览器进行渲染的一种方法。与传统的前端渲染不同,SSR可以提供更好的SEO优化和更好的页…

    other 2023年6月27日
    00
  • WinXP系统关机时提示“dwwin.exe初始化失败”的故障分析及四种解决方法

    WinXP系统关机时提示“dwwin.exe初始化失败”的故障分析及四种解决方法 问题描述: 在使用WinXP系统时,可能会出现关机时提示“dwwin.exe初始化失败”的情况,这个问题会导致系统不能正常关机,严重影响用户体验。 故障分析: 症状描述 出现“dwwin.exe初始化失败”的提示信息时,可能会伴随着蓝屏、死机等问题。 故障原因 “dwwin.e…

    other 2023年6月20日
    00
  • Mysql表的约束超详细讲解

    下面为您详细讲解Mysql表的约束。 什么是Mysql表的约束 Mysql表的约束是限制表中数据的规则,为保证数据的完整性和一致性而设置的一种机制。约束分为以下几种: 主键约束(Primary Key Constraint):用于保证表中每条记录的唯一性。一个表中只能有一个主键,它可以由一个或多个列组成。 唯一约束(Unique Constraint):用于…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部