Browse Source

change style to ox

main
MTing 3 weeks ago
parent
commit
871627ac74
  1. 66
      app/src/main/java/com/example/oxfacelogin/MainActivity.java
  2. 9
      app/src/main/res/drawable/gradient_background.xml
  3. 10
      app/src/main/res/drawable/gradient_button.xml
  4. 28
      app/src/main/res/drawable/gradient_button_selector.xml
  5. 291
      app/src/main/res/layout/activity_main.xml

66
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() {
@ -45,21 +56,51 @@ 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();
}
}

9
app/src/main/res/drawable/gradient_background.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#4DD0B0"
android:centerColor="#009874"
android:endColor="#006B54"
android:angle="135"
android:type="linear" />
</shape>

10
app/src/main/res/drawable/gradient_button.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#FFB74D"
android:centerColor="#FF9800"
android:endColor="#F57C00"
android:angle="45"
android:type="linear" />
<corners android:radius="25dp" />
</shape>

28
app/src/main/res/drawable/gradient_button_selector.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按下状态 -->
<item android:state_pressed="true">
<shape>
<gradient
android:startColor="#E6A644"
android:centerColor="#E68A00"
android:endColor="#D17100"
android:angle="45"
android:type="linear" />
<corners android:radius="25dp" />
</shape>
</item>
<!-- 正常状态 -->
<item>
<shape>
<gradient
android:startColor="#FFB74D"
android:centerColor="#FF9800"
android:endColor="#F57C00"
android:angle="45"
android:type="linear" />
<corners android:radius="25dp" />
</shape>
</item>
</selector>

291
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">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/min_screen_height"
android:paddingStart="32dp"
android:paddingEnd="32dp"
tools:context=".MainActivity">
<!-- 应用Logo -->
<ImageView
android:id="@+id/imageViewLogo"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="40dp"
android:src="@drawable/ic_login_logo"
android:contentDescription="@string/app_logo"
<!-- Logo容器 -->
<androidx.cardview.widget.CardView
android:id="@+id/logoContainer"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginTop="80dp"
app:cardCornerRadius="60dp"
app:cardElevation="12dp"
app:cardBackgroundColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent">
<!-- 应用标题 -->
<TextView
android:id="@+id/textViewTitle"
android:layout_width="wrap_content"
<ImageView
android:id="@+id/imageViewLogo"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:src="@drawable/ic_login_logo"
android:contentDescription="@string/app_logo" />
</androidx.cardview.widget.CardView>
<!-- 用户名输入框 -->
<androidx.cardview.widget.CardView
android:id="@+id/usernameCard"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/app_name"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="@color/primary_text_color"
android:layout_marginTop="80dp"
app:cardCornerRadius="25dp"
app:cardElevation="4dp"
app:cardBackgroundColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageViewLogo" />
app:layout_constraintTop_toBottomOf="@+id/logoContainer">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_person"
android:layout_marginEnd="12dp"
android:contentDescription="用户图标" />
<EditText
android:id="@+id/editTextUsername"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:hint="@string/hint_username"
android:inputType="text"
android:maxLines="1"
android:background="@android:color/transparent"
android:textColor="@color/primary_text_color"
android:textColorHint="@color/secondary_text_color"
android:textSize="16sp" />
<!-- 登录卡片容器 -->
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- 密码输入框 -->
<androidx.cardview.widget.CardView
android:id="@+id/passwordCard"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="32dp"
android:layout_marginBottom="32dp"
app:cardCornerRadius="16dp"
app:cardElevation="8dp"
app:cardBackgroundColor="@color/card_background"
android:layout_marginTop="16dp"
app:cardCornerRadius="25dp"
app:cardElevation="4dp"
app:cardBackgroundColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewTitle"
app:layout_constraintBottom_toBottomOf="parent">
app:layout_constraintTop_toBottomOf="@+id/usernameCard">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="32dp">
android:layout_height="50dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp">
<!-- 登录卡片内的Logo -->
<ImageView
android:id="@+id/imageViewLoginLogo"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:layout_marginBottom="24dp"
android:src="@drawable/ic_login_logo"
android:contentDescription="@string/login_logo" />
<!-- 用户名输入框 -->
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:hint="@string/hint_username"
app:startIconDrawable="@drawable/ic_person"
app:boxStrokeColor="@color/primary_color"
app:hintTextColor="@color/primary_color"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editTextUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLines="1"
android:textColor="@color/primary_text_color"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<!-- 密码输入框 -->
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_lock"
android:layout_marginEnd="12dp"
android:contentDescription="密码图标" />
<EditText
android:id="@+id/editTextPassword"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:hint="@string/hint_password"
app:startIconDrawable="@drawable/ic_lock"
app:endIconMode="password_toggle"
app:boxStrokeColor="@color/primary_color"
app:hintTextColor="@color/primary_color"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editTextPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:maxLines="1"
android:textColor="@color/primary_text_color"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<!-- 登录按钮 -->
<com.google.android.material.button.MaterialButton
android:id="@+id/buttonLogin"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="@string/login_button"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="@android:color/white"
app:backgroundTint="@color/primary_color"
app:cornerRadius="28dp"
app:elevation="4dp" />
<!-- 忘记密码链接 -->
<TextView
android:id="@+id/textViewForgotPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="16dp"
android:text="@string/forgot_password"
android:textColor="@color/secondary_text_color"
android:textSize="14sp"
android:padding="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true" />
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" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- 提示文字 -->
<TextView
android:id="@+id/textViewHint"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="登录账号密码请从PC端后台管理【设备运营管理平台管理】里获取"
android:textColor="@color/white"
android:textSize="12sp"
android:gravity="center"
android:alpha="0.8"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/passwordCard" />
<!-- 登录按钮 -->
<androidx.cardview.widget.CardView
android:id="@+id/loginButtonCard"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
app:cardCornerRadius="25dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewHint">
<Button
android:id="@+id/buttonLogin"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="@string/login_button"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@color/white"
android:background="@drawable/gradient_button_selector"
android:elevation="0dp"
android:stateListAnimator="@null" />
</androidx.cardview.widget.CardView>
<!-- 版本信息 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="重启设备"
android:textColor="@color/white"
android:textSize="12sp"
android:alpha="0.7" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Version 1.8.3.9"
android:textColor="@color/white"
android:textSize="12sp"
android:alpha="0.7" />
</LinearLayout>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="本机设备ID:c9cb00145a2ac56f"
android:textColor="@color/white"
android:textSize="12sp"
android:alpha="0.7"
android:gravity="end"
app:layout_constraintBottom_toTopOf="@+id/linearLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:id="@+id/linearLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
Loading…
Cancel
Save