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 @@ + + + + + + +