From 2379c7e7d603bfdae1e25720057eec0ba270e3b3 Mon Sep 17 00:00:00 2001 From: liuyx <1517482303@qq.com> Date: Mon, 27 Mar 2023 10:55:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=B7=B3=E8=BD=AC=E3=80=81?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=B3=A8=E5=86=8C=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 +- .../main/java/cc/liuyx/app/LoginActivity.java | 53 +++++++++-- .../java/cc/liuyx/app/RegisterActivity.java | 63 +++++++++++- .../java/cc/liuyx/app/UserInfoActivity.java | 53 ++++++++++- app/src/main/res/layout/activity_login.xml | 4 +- app/src/main/res/layout/activity_register.xml | 10 +- .../main/res/layout/activity_user_info.xml | 95 +++++++++++++++++-- app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/strings.xml | 2 + 9 files changed, 257 insertions(+), 28 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 86ec6ac..0ab3320 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ tools:targetApi="31"> @@ -26,7 +26,7 @@ android:exported="false" /> diff --git a/app/src/main/java/cc/liuyx/app/LoginActivity.java b/app/src/main/java/cc/liuyx/app/LoginActivity.java index 3a8e7c4..3edf395 100644 --- a/app/src/main/java/cc/liuyx/app/LoginActivity.java +++ b/app/src/main/java/cc/liuyx/app/LoginActivity.java @@ -1,20 +1,28 @@ package cc.liuyx.app; import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; -import android.widget.Button; +import android.widget.EditText; import android.widget.TextView; +import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; -public class LoginActivity extends AppCompatActivity { +public class LoginActivity extends AppCompatActivity implements View.OnClickListener { + + private EditText usernameEdit, passwdEdit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); + usernameEdit = findViewById(R.id.login_username); + passwdEdit = findViewById(R.id.login_passwd); + + findViewById(R.id.btn_login).setOnClickListener(this); TextView textView = findViewById(R.id.click_register); textView.setOnClickListener(new View.OnClickListener() { @Override @@ -22,13 +30,42 @@ public class LoginActivity extends AppCompatActivity { startActivity(new Intent(LoginActivity.this, RegisterActivity.class)); } }); + } - Button btnLogin = findViewById(R.id.btn_login); - btnLogin.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - startActivity(new Intent(LoginActivity.this, UserInfoActivity.class)); + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_login: + login(); + break; + } + } + + private void login() { + String username = usernameEdit.getText().toString(); + String passwd = passwdEdit.getText().toString(); + + if (!username.equals("") && !passwd.equals("")) { + SharedPreferences sp = getSharedPreferences("loginStatus", MODE_PRIVATE); + String localName = sp.getString("username", null); + String localPasswd = sp.getString("passwd", null); + if (!username.equals(localName) || !passwd.equals(localPasswd)) { + Toast.makeText(LoginActivity.this, "用户名或密码错误>_<", Toast.LENGTH_SHORT).show(); + return; } - }); + + SharedPreferences.Editor editor = sp.edit(); + editor.putBoolean("isLoggedIn", true); + editor.putString("username", username); + editor.apply(); + + Intent intent = new Intent(LoginActivity.this, UserInfoActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } else { + Toast.makeText(LoginActivity.this, "请填入用户名与密码哦~", Toast.LENGTH_SHORT).show(); + } + + } } \ No newline at end of file diff --git a/app/src/main/java/cc/liuyx/app/RegisterActivity.java b/app/src/main/java/cc/liuyx/app/RegisterActivity.java index 50258b1..715f9ba 100644 --- a/app/src/main/java/cc/liuyx/app/RegisterActivity.java +++ b/app/src/main/java/cc/liuyx/app/RegisterActivity.java @@ -1,18 +1,40 @@ package cc.liuyx.app; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; +import android.widget.EditText; import android.widget.ImageView; +import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; -public class RegisterActivity extends AppCompatActivity { +public class RegisterActivity extends AppCompatActivity implements View.OnClickListener { + + private String username = ""; + private String passwd = ""; + private String passwdAgain = ""; + private String phone = ""; + private String email = ""; + + private EditText usernameEdit, passwdEdit, passwdAgainEdit, phoneEdit, emailEdit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); + // 初始化每个组件 + usernameEdit = findViewById(R.id.username); + passwdEdit = findViewById(R.id.passwd); + passwdAgainEdit = findViewById(R.id.passwd2); + phoneEdit = findViewById(R.id.phone); + emailEdit = findViewById(R.id.email); + + findViewById(R.id.btn_register).setOnClickListener(this); + ImageView back = findViewById(R.id.register_back); back.setOnClickListener(new View.OnClickListener() { @Override @@ -22,4 +44,43 @@ public class RegisterActivity extends AppCompatActivity { } }); } + + @Override + public void onClick(View v) { + if (v.getId() == R.id.btn_register) { + validateRegister(); + } + } + + private void validateRegister() { + Intent intent = new Intent(RegisterActivity.this, UserInfoActivity.class); + + username = usernameEdit.getText().toString(); + passwd = passwdEdit.getText().toString(); + passwdAgain = passwdAgainEdit.getText().toString(); + email = emailEdit.getText().toString(); + phone = phoneEdit.getText().toString(); + + // 判断两次密码是否相等 + if (passwd.equals(passwdAgain)) { + if (!username.equals("") && !passwd.equals("")) { + // 设置登录状态 + SharedPreferences sharedPreferences = getSharedPreferences("loginStatus", Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean("isLoggedIn", true); + editor.putString("username", username); + editor.putString("email", email); + editor.putString("phone", phone); + editor.putString("passwd", passwd); + editor.apply(); + + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } else { + Toast.makeText(RegisterActivity.this, "请填入用户名与密码哦~", Toast.LENGTH_SHORT).show(); + } + } else { + Toast.makeText(RegisterActivity.this, "两次密码输入不一致!", Toast.LENGTH_SHORT).show(); + } + } } \ No newline at end of file diff --git a/app/src/main/java/cc/liuyx/app/UserInfoActivity.java b/app/src/main/java/cc/liuyx/app/UserInfoActivity.java index 7420fe5..a51c414 100644 --- a/app/src/main/java/cc/liuyx/app/UserInfoActivity.java +++ b/app/src/main/java/cc/liuyx/app/UserInfoActivity.java @@ -1,14 +1,65 @@ package cc.liuyx.app; +import android.annotation.SuppressLint; +import android.content.Intent; +import android.content.SharedPreferences; import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; -public class UserInfoActivity extends AppCompatActivity { +public class UserInfoActivity extends AppCompatActivity implements View.OnClickListener { + private String username = ""; + private String phone = ""; + private String email = ""; + + @SuppressLint("SetTextI18n") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_info); + + // 判断用户是否已经登录 + // 如果未登录,则跳转至登录页面 + SharedPreferences preferences = getSharedPreferences("loginStatus", MODE_PRIVATE); + boolean isLogin = preferences.getBoolean("isLoggedIn", false); + System.out.println(isLogin); + if (!isLogin) { + // 跳转到 LoginActivity + Intent intent = new Intent(UserInfoActivity.this, LoginActivity.class); + startActivity(intent); + finish(); + return; + } + + username = preferences.getString("username", null); + email = preferences.getString("email", null); + phone = preferences.getString("phone", null); + + TextView userName = findViewById(R.id.user_username); + TextView userPhone = findViewById(R.id.user_phone); + TextView userEmail = findViewById(R.id.user_email); + userName.setText(userName.getText() + username); + userPhone.setText(userPhone.getText() + phone); + userEmail.setText(userEmail.getText() + email); + + Button btnLogout = findViewById(R.id.logout); + btnLogout.setOnClickListener(this); + } + + @Override + public void onClick(View view) { + if (view.getId() == R.id.logout) { + SharedPreferences preferences = getSharedPreferences("loginStatus", MODE_PRIVATE); + SharedPreferences.Editor edit = preferences.edit(); + edit.remove("isLoggedIn"); + edit.apply(); + + finish(); + startActivity(new Intent(this, LoginActivity.class)); + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index f34d471..70a725d 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -23,7 +23,7 @@ android:textSize="18sp" /> + android:textSize="@dimen/normal_font_size" /> + android:textSize="@dimen/normal_font_size" /> + android:textSize="@dimen/normal_font_size" /> + android:textSize="@dimen/normal_font_size" /> + android:textSize="@dimen/normal_font_size" />