下面是“Android制作登录页面并且记住账号密码功能的实现代码”完整攻略:
1. 编写登录页面布局
首先需要创建一个登录页面的布局,可以使用EditText
和Button
等组件实现,同时建议使用LinearLayout
或RelativeLayout
等布局组件实现页面排版。
示例代码:
<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技术站