first commit
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
package com.example.defenseapplication.login
|
||||
import android.content.Intent
|
||||
import com.example.defenseapplication.R
|
||||
import android.os.Bundle
|
||||
import android.os.CountDownTimer
|
||||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.constraintlayout.widget.ConstraintSet
|
||||
import com.example.defenseapplication.databinding.ActivityLoginBinding
|
||||
|
||||
class LoginActivity : AppCompatActivity() {
|
||||
|
||||
private lateinit var binding: ActivityLoginBinding
|
||||
private var currentLoginMode = LoginMode.SMS
|
||||
|
||||
enum class LoginMode { SMS, PASSWORD }
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityLoginBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
setupTabListeners()
|
||||
setupClickListeners()
|
||||
switchToSmsMode()
|
||||
}
|
||||
|
||||
private fun setupTabListeners() {
|
||||
binding.tvSmsLogin.setOnClickListener {
|
||||
if (currentLoginMode != LoginMode.SMS) {
|
||||
currentLoginMode = LoginMode.SMS
|
||||
switchToSmsMode()
|
||||
}
|
||||
}
|
||||
binding.tvPwdLogin.setOnClickListener {
|
||||
if (currentLoginMode != LoginMode.PASSWORD) {
|
||||
currentLoginMode = LoginMode.PASSWORD
|
||||
switchToPasswordMode()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun switchToSmsMode() {
|
||||
binding.tvSmsLogin.setTextColor(getColor(R.color.black))
|
||||
binding.tvPwdLogin.setTextColor(getColor(R.color.gray))
|
||||
|
||||
binding.smsRowLayout.visibility = View.VISIBLE
|
||||
binding.passwordRowLayout.visibility = View.GONE // 隐藏密码行容器
|
||||
|
||||
binding.registerText.visibility = View.VISIBLE
|
||||
binding.forgetText.visibility = View.GONE
|
||||
updateRegisterTextConstraints(center = true)
|
||||
|
||||
//需要正确的方法名和参数
|
||||
updateLoginButtonTopConstraint(R.id.smsRowLayout)
|
||||
}
|
||||
|
||||
private fun switchToPasswordMode() {
|
||||
binding.tvPwdLogin.setTextColor(getColor(R.color.black))
|
||||
binding.tvSmsLogin.setTextColor(getColor(R.color.gray))
|
||||
|
||||
binding.smsRowLayout.visibility = View.GONE
|
||||
//正确的属性访问
|
||||
binding.passwordRowLayout.visibility = View.VISIBLE // 显示密码行容器
|
||||
|
||||
binding.registerText.visibility = View.VISIBLE
|
||||
binding.forgetText.visibility = View.VISIBLE
|
||||
updateRegisterTextConstraints(center = false)
|
||||
|
||||
updateLoginButtonTopConstraint(R.id.passwordRowLayout)
|
||||
}
|
||||
|
||||
// 动态修改登录按钮的顶部约束
|
||||
private fun updateLoginButtonTopConstraint(topTargetId: Int) {
|
||||
val params = binding.loginBtn.layoutParams as ConstraintLayout.LayoutParams
|
||||
params.topToBottom = topTargetId
|
||||
params.topMargin = 32
|
||||
binding.loginBtn.layoutParams = params
|
||||
}
|
||||
|
||||
// 动态修改立即注册的约束(居中/左对齐)
|
||||
private fun updateRegisterTextConstraints(center: Boolean) {
|
||||
val params = binding.registerText.layoutParams as ConstraintLayout.LayoutParams
|
||||
if (center) {
|
||||
// 短信模式:居中显示
|
||||
params.startToStart = ConstraintSet.PARENT_ID
|
||||
params.endToEnd = ConstraintSet.PARENT_ID
|
||||
} else {
|
||||
// 密码模式:左对齐登录按钮
|
||||
params.startToStart = binding.loginBtn.id
|
||||
params.endToEnd = ConstraintSet.UNSET
|
||||
}
|
||||
params.topToBottom = binding.loginBtn.id
|
||||
params.topMargin = 20
|
||||
binding.registerText.layoutParams = params
|
||||
}
|
||||
|
||||
private fun setupClickListeners() {
|
||||
binding.loginBtn.setOnClickListener {
|
||||
val phone = binding.etPhone.text.toString()
|
||||
if (phone.isEmpty()) {
|
||||
Toast.makeText(this, "请输入手机号", Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
when (currentLoginMode) {
|
||||
LoginMode.SMS -> {
|
||||
val code = binding.etSmsCode.text.toString()
|
||||
if (code.isEmpty()) {
|
||||
Toast.makeText(this, "请输入验证码", Toast.LENGTH_SHORT).show()
|
||||
} else {
|
||||
Toast.makeText(this, "验证码登录成功\n手机号:$phone\n验证码:$code", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
LoginMode.PASSWORD -> {
|
||||
val pwd = binding.etPassword.text.toString()
|
||||
if (pwd.isEmpty()) {
|
||||
Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show()
|
||||
} else {
|
||||
Toast.makeText(this, "密码登录成功\n手机号:$phone\n密码:$pwd", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
binding.sendCodeBtn.setOnClickListener {
|
||||
val phone = binding.etPhone.text.toString()
|
||||
if (phone.isEmpty()) {
|
||||
Toast.makeText(this, "请先输入手机号", Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
Toast.makeText(this, "验证码已发送至 $phone", Toast.LENGTH_SHORT).show()
|
||||
startCountDown()
|
||||
}
|
||||
|
||||
binding.registerText.setOnClickListener {
|
||||
val intent= Intent(this, RegisterActivity::class.java)
|
||||
startActivity(intent)
|
||||
Toast.makeText(this, "跳转到注册页面", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
binding.forgetText.setOnClickListener {
|
||||
val intent= Intent(this, ForgetPasswordActivity::class.java)
|
||||
startActivity(intent)
|
||||
Toast.makeText(this, "找回密码", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
|
||||
private fun startCountDown() {
|
||||
binding.sendCodeBtn.isEnabled = false
|
||||
object : CountDownTimer(60000, 1000) {
|
||||
override fun onTick(millisUntilFinished: Long) {
|
||||
binding.sendCodeBtn.text = "${millisUntilFinished / 1000}秒后重试"
|
||||
}
|
||||
override fun onFinish() {
|
||||
binding.sendCodeBtn.text = "发送验证码"
|
||||
binding.sendCodeBtn.isEnabled = true
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user