android studio 做一个用户登录界面,有自动登录选项功能。代码示例
时间: 2023-06-17 09:02:25 浏览: 37
以下是一个示例代码,实现了用户登录和自动登录功能:
activity_login.xml:
```
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editTextUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username"/>
<EditText
android:id="@+id/editTextPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword"/>
<CheckBox
android:id="@+id/checkBoxAutoLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Auto Login"/>
<Button
android:id="@+id/buttonLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Login"/>
</LinearLayout>
```
LoginActivity.java:
```
public class LoginActivity extends AppCompatActivity {
private EditText editTextUsername;
private EditText editTextPassword;
private CheckBox checkBoxAutoLogin;
private Button buttonLogin;
private String username;
private String password;
private boolean autoLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
editTextUsername = findViewById(R.id.editTextUsername);
editTextPassword = findViewById(R.id.editTextPassword);
checkBoxAutoLogin = findViewById(R.id.checkBoxAutoLogin);
buttonLogin = findViewById(R.id.buttonLogin);
buttonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取用户输入的用户名和密码
username = editTextUsername.getText().toString();
password = editTextPassword.getText().toString();
// 进行用户登录逻辑
if (login(username, password)) {
// 登录成功
if (autoLogin) {
// 保存自动登录状态
saveAutoLoginStatus(true);
}
// 跳转到主界面
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
// 登录失败
Toast.makeText(LoginActivity.this, "Login failed", Toast.LENGTH_SHORT).show();
}
}
});
// 加载自动登录状态
autoLogin = loadAutoLoginStatus();
if (autoLogin) {
// 自动填充用户名和密码
username = loadUsername();
password = loadPassword();
editTextUsername.setText(username);
editTextPassword.setText(password);
// 直接登录
if (login(username, password)) {
// 登录成功
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
}
private boolean login(String username, String password) {
// TODO: 实现用户登录逻辑
return true;
}
private void saveAutoLoginStatus(boolean enable) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("auto_login", enable);
editor.apply();
}
private boolean loadAutoLoginStatus() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
return preferences.getBoolean("auto_login", false);
}
private void saveUsername(String username) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("username", username);
editor.apply();
}
private String loadUsername() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
return preferences.getString("username", "");
}
private void savePassword(String password) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("password", password);
editor.apply();
}
private String loadPassword() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
return preferences.getString("password", "");
}
}
```
在这个示例中,我们使用了SharedPreferences来保存自动登录状态、用户名和密码。当用户勾选自动登录选项时,我们会保存自动登录状态并保存用户名和密码。当用户下次打开应用时,我们会加载自动登录状态和用户名、密码,如果自动登录状态为true,则会自动填充用户名和密码,并进行登录操作。