diff --git a/app/src/main/java/com/example/oxfacelogin/MainActivity.java b/app/src/main/java/com/example/oxfacelogin/MainActivity.java
index 7e93838..1356a06 100644
--- a/app/src/main/java/com/example/oxfacelogin/MainActivity.java
+++ b/app/src/main/java/com/example/oxfacelogin/MainActivity.java
@@ -1,7 +1,9 @@
package com.example.oxfacelogin;
import androidx.appcompat.app.AppCompatActivity;
+import android.animation.ObjectAnimator;
import android.os.Bundle;
+import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
@@ -12,17 +14,26 @@ public class MainActivity extends AppCompatActivity {
private EditText editTextUsername;
private EditText editTextPassword;
private Button buttonLogin;
+ private Toast currentToast; // 用于管理Toast显示状态
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+ // 隐藏ActionBar以获得全屏效果
+ if (getSupportActionBar() != null) {
+ getSupportActionBar().hide();
+ }
+
// 初始化视图组件
initViews();
// 设置登录按钮点击事件
setupLoginButton();
+
+ // 设置按钮触摸动画
+ setupButtonAnimation();
}
private void initViews() {
@@ -44,22 +55,52 @@ public class MainActivity extends AppCompatActivity {
}
});
}
+
+ private void setupButtonAnimation() {
+ buttonLogin.setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ // 按下时缩小
+ ObjectAnimator scaleDownX = ObjectAnimator.ofFloat(v, "scaleX", 0.95f);
+ ObjectAnimator scaleDownY = ObjectAnimator.ofFloat(v, "scaleY", 0.95f);
+ scaleDownX.setDuration(100);
+ scaleDownY.setDuration(100);
+ scaleDownX.start();
+ scaleDownY.start();
+ break;
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_CANCEL:
+ // 释放时恢复
+ ObjectAnimator scaleUpX = ObjectAnimator.ofFloat(v, "scaleX", 1.0f);
+ ObjectAnimator scaleUpY = ObjectAnimator.ofFloat(v, "scaleY", 1.0f);
+ scaleUpX.setDuration(100);
+ scaleUpY.setDuration(100);
+ scaleUpX.start();
+ scaleUpY.start();
+ break;
+ }
+ return false; // 返回false以确保onClick事件仍然被触发
+ }
+ });
+ }
private boolean validateInput(String username, String password) {
if (username.isEmpty()) {
- editTextUsername.setError("请输入用户名");
+ showToast("请输入用户名");
editTextUsername.requestFocus();
return false;
}
if (password.isEmpty()) {
- editTextPassword.setError("请输入密码");
+ showToast("请输入密码");
editTextPassword.requestFocus();
return false;
}
if (password.length() < 6) {
- editTextPassword.setError("密码长度至少6位");
+ showToast("密码长度至少6位");
editTextPassword.requestFocus();
return false;
}
@@ -71,9 +112,24 @@ public class MainActivity extends AppCompatActivity {
// 这里可以添加实际的登录逻辑
// 目前只是显示一个简单的提示
if (username.equals("admin") && password.equals("123456")) {
- Toast.makeText(this, "登录成功!欢迎 " + username, Toast.LENGTH_SHORT).show();
+ showToast("登录成功!欢迎 " + username);
} else {
- Toast.makeText(this, "用户名或密码错误", Toast.LENGTH_SHORT).show();
+ showToast("用户名或密码错误");
}
}
+
+ /**
+ * 显示Toast消息,确保只显示最新的消息
+ * @param message 要显示的消息
+ */
+ private void showToast(String message) {
+ // 如果之前有Toast正在显示,先取消它
+ if (currentToast != null) {
+ currentToast.cancel();
+ }
+
+ // 创建新的Toast并显示
+ currentToast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
+ currentToast.show();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gradient_background.xml b/app/src/main/res/drawable/gradient_background.xml
new file mode 100644
index 0000000..88464cf
--- /dev/null
+++ b/app/src/main/res/drawable/gradient_background.xml
@@ -0,0 +1,9 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gradient_button.xml b/app/src/main/res/drawable/gradient_button.xml
new file mode 100644
index 0000000..6a57c8c
--- /dev/null
+++ b/app/src/main/res/drawable/gradient_button.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gradient_button_selector.xml b/app/src/main/res/drawable/gradient_button_selector.xml
new file mode 100644
index 0000000..88cede7
--- /dev/null
+++ b/app/src/main/res/drawable/gradient_button_selector.xml
@@ -0,0 +1,28 @@
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 6747ecd..4cb7931 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -4,150 +4,215 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/background_color"
+ android:background="@drawable/gradient_background"
android:fillViewport="true">
-
-
+
+ app:layout_constraintTop_toTopOf="parent">
-
-
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/logoContainer">
+
+
+
+
+
+
-
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/usernameCard">
+ android:layout_height="50dp"
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp">
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
+ android:inputType="textPassword"
+ android:maxLines="1"
+ android:background="@android:color/transparent"
+ android:textColor="@color/primary_text_color"
+ android:textColorHint="@color/secondary_text_color"
+ android:textSize="16sp" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file