From 34a6ac502ab6187fb18448addc56a604f92a65b5 Mon Sep 17 00:00:00 2001
From: Yo Vinchen <2982554722@qq.com>
Date: Mon, 20 Mar 2023 22:33:26 +0800
Subject: [PATCH] Initial commit
---
app/src/main/AndroidManifest.xml | 3 +
.../main/java/com/youxuegu/MainActivity.java | 3 +-
.../com/youxuegu/activity/LoginActivity.java | 117 ++++++++++++++++++
.../java/com/youxuegu/utils/UtilsHelper.java | 27 ++++
app/src/main/res/layout/activity_login.xml | 54 ++++++++
app/src/main/res/values/themes.xml | 10 ++
6 files changed, 213 insertions(+), 1 deletion(-)
create mode 100644 app/src/main/java/com/youxuegu/activity/LoginActivity.java
create mode 100644 app/src/main/res/layout/activity_login.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f2e4889..41afc96 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -11,6 +11,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.NoActionBar"
tools:targetApi="31">
+
diff --git a/app/src/main/java/com/youxuegu/MainActivity.java b/app/src/main/java/com/youxuegu/MainActivity.java
index 3c2d415..a104db7 100644
--- a/app/src/main/java/com/youxuegu/MainActivity.java
+++ b/app/src/main/java/com/youxuegu/MainActivity.java
@@ -5,6 +5,7 @@ import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
+import com.youxuegu.activity.LoginActivity;
import com.youxuegu.activity.RegisterActivity;
/**
@@ -16,7 +17,7 @@ public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
+ Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/youxuegu/activity/LoginActivity.java b/app/src/main/java/com/youxuegu/activity/LoginActivity.java
new file mode 100644
index 0000000..099470f
--- /dev/null
+++ b/app/src/main/java/com/youxuegu/activity/LoginActivity.java
@@ -0,0 +1,117 @@
+package com.youxuegu.activity;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.youxuegu.R;
+import com.youxuegu.utils.MD5Utils;
+import com.youxuegu.utils.UtilsHelper;
+
+public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
+
+ private TextView tv_main_title;
+ private TextView tv_back, tv_register, tv_find_psw;
+ private Button btn_login;
+ private String userName, psw, spPsw;
+ private EditText et_user_name, et_psw;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_login);
+ init();
+ }
+
+ private void init() {
+ tv_main_title = findViewById(R.id.tv_main_title);
+ tv_main_title.setText("登录");
+ tv_back = findViewById(R.id.tv_back);
+ tv_register = findViewById(R.id.tv_register);
+ tv_find_psw = findViewById(R.id.tv_find_psw);
+ btn_login = findViewById(R.id.btn_login);
+ et_user_name = findViewById(R.id.et_user_name);
+ et_psw = findViewById(R.id.et_psw);
+ tv_back.setOnClickListener(this);
+ tv_register.setOnClickListener(this);
+ tv_find_psw.setOnClickListener(this);
+ btn_login.setOnClickListener(this);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (data != null) {
+ //从注册界面回传过来的用户名
+ String userName = data.getStringExtra("userName");
+ if (!TextUtils.isEmpty(userName)) {
+ et_user_name.setText(userName);
+ //设置光标位置
+ et_user_name.setSelection(userName.length());
+ }
+ }
+ }
+
+ @Override
+ public void onClick(View view) {
+ switch (view.getId()) {
+ //"返回"按钮的点击事件
+ case R.id.tv_back:
+ this.finish();
+ break;
+ //"立即注册"文本的点击事件
+ case R.id.tv_register:
+ Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
+ startActivityForResult(intent, 1);
+ break;
+ //"找回密码"文本的点击事件
+ case R.id.tv_find_psw:
+ //跳转到找回密码界面
+ //Intent findPswIntent = new Intent(LoginActivity.this, FindPswActivity.class);
+ //startActivity(findPswIntent);
+ break;
+ //"登录"按钮的点击事件
+ case R.id.btn_login:
+ userName = et_user_name.getText().toString().trim();
+ psw = et_psw.getText().toString().trim();
+ String md5Psw = MD5Utils.md5(psw);
+ //根据用户名读取系统中密码
+ spPsw = UtilsHelper.readPsw(LoginActivity.this, userName);
+ if (TextUtils.isEmpty(userName)) {
+ //用户名为空
+ Toast.makeText(LoginActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
+ return;
+ } else if (TextUtils.isEmpty(spPsw)) {
+ //用户名未注册
+ Toast.makeText(LoginActivity.this, "此用户名不存在", Toast.LENGTH_SHORT).show();
+ return;
+ } else if (TextUtils.isEmpty(psw)) {
+ //密码未输入
+ Toast.makeText(LoginActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
+ return;
+ } else if ((!TextUtils.isEmpty(spPsw) && !md5Psw.equals(spPsw))) {
+ //密码输入错误
+ Toast.makeText(LoginActivity.this, "输入的密码不正确", Toast.LENGTH_SHORT).show();
+ return;
+ } else if (md5Psw.equals(spPsw)) {
+ Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
+ //保存登录状态和登录的用户名
+ UtilsHelper.saveLoginStatus(LoginActivity.this, true, userName);
+ //把登录成功的状态传递到MainActivity中
+ Intent data = new Intent();
+ data.putExtra("isLogin", true);
+ setResult(RESULT_OK, data);
+ LoginActivity.this.finish();
+ }
+ break;
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/youxuegu/utils/UtilsHelper.java b/app/src/main/java/com/youxuegu/utils/UtilsHelper.java
index f096d49..b19140f 100644
--- a/app/src/main/java/com/youxuegu/utils/UtilsHelper.java
+++ b/app/src/main/java/com/youxuegu/utils/UtilsHelper.java
@@ -21,6 +21,9 @@ public class UtilsHelper {
return has_userName;
}
+ /**
+ * 将密码用MD5加密
+ */
public static void saveUserInfo(Context context, String userName, String psw) {
//将密码用MD5加密
String md5Psw = MD5Utils.md5(psw);
@@ -32,4 +35,28 @@ public class UtilsHelper {
editor.putString(userName, md5Psw);
editor.commit();//提交保存信息
}
+
+ /**
+ * 根据用户名在文件loginInfo中返回密码信息
+ */
+ public static String readPsw(Context context, String userName) {
+ SharedPreferences sp = context.getSharedPreferences("loginInfo", Context.MODE_PRIVATE);
+ String spPsw = sp.getString(userName, "");
+ return spPsw;
+ }
+
+ /**
+ * 保存登录状态和登录用户名到SharedPreferences文件中
+ */
+ public static void saveLoginStatus(Context context, boolean status, String userName) {
+ SharedPreferences sp = context.getSharedPreferences("loginInfo", Context.MODE_PRIVATE);
+ //获取编辑器
+ SharedPreferences.Editor editor = sp.edit();
+ //存入boolean类型的登录状态
+ editor.putBoolean("isLogin", status);
+ //存入登录时的用户名
+ editor.putString("loginUserName", userName);
+ //提交修改
+ editor.commit();
+ }
}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000..72df791
--- /dev/null
+++ b/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index b108084..0f99541 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -39,4 +39,14 @@
- @android:color/white
- 18sp
+
+
\ No newline at end of file