From f496392b24eb9c9a38498cbbf03159ef5aa037d1 Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期一, 21 四月 2025 15:38:08 +0800
Subject: [PATCH] 1.好友邀请-我的邀请记录:列表样式重写,图片显示 2.已登录的用户点击应用图标之后直接登录
---
app/src/main/java/com/example/firstapp/activity/LoginActivity.kt | 139 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 137 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/example/firstapp/activity/LoginActivity.kt b/app/src/main/java/com/example/firstapp/activity/LoginActivity.kt
index 3516e12..6bde03a 100644
--- a/app/src/main/java/com/example/firstapp/activity/LoginActivity.kt
+++ b/app/src/main/java/com/example/firstapp/activity/LoginActivity.kt
@@ -1,18 +1,56 @@
package com.example.firstapp.activity
+import android.app.AlertDialog
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import android.content.Intent
+import android.graphics.Color
+import android.text.SpannableString
+import android.text.Spanned
+import android.text.TextPaint
+import android.text.method.LinkMovementMethod
+import android.text.style.ClickableSpan
+import android.view.LayoutInflater
+import android.view.View
+import android.widget.Button
+import android.widget.CheckBox
+import android.widget.TextView
+import androidx.activity.viewModels
+import com.example.firstapp.MainActivity
+import com.example.firstapp.R
import com.example.firstapp.databinding.ActivityLoginBinding
+import com.example.firstapp.ui.login.LoginViewModel
+import com.example.firstapp.utils.PreferencesManager
+import kotlin.system.exitProcess
class LoginActivity : AppCompatActivity() {
private lateinit var binding: ActivityLoginBinding
+ private val viewModel: LoginViewModel by viewModels()
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityLoginBinding.inflate(layoutInflater)
- setContentView(binding.root)
- setupViews()
+
+ // 这里查看是否已经登录过,如果已经登录过则直接跳转到主页
+ // 获取token
+ val token = PreferencesManager.getToken()
+ if (!token.isNullOrEmpty()) {
+ startActivity(Intent(this, MainActivity::class.java))
+ finishAffinity() // 结束所有之前的Activity
+ }else{
+ setContentView(binding.root)
+ setupViews()
+
+ val phone=PreferencesManager.getLastLoginPhone()
+ // 如果phone不存在则展示弹框
+ if (phone.isNullOrEmpty()) {
+ showConfirmDialog()
+ }
+ }
+
+
+
}
private fun setupViews() {
@@ -34,11 +72,108 @@
binding.tvUserAgreement.setOnClickListener {
// 打开用户协议
+ startContentActivity("用户协议", "服务使用协议")
}
binding.tvPrivacyPolicy.setOnClickListener {
// 打开隐私政策
+ startContentActivity("隐私协议", "隐私保护政策")
}
}
+ private fun showConfirmDialog() {
+ val dialogView = LayoutInflater.from(this).inflate(R.layout.login_protocol_dialog_custom, null)
+
+ val dialog = AlertDialog.Builder(this)
+ .setView(dialogView)
+ .create()
+
+ dialog.window?.setBackgroundDrawableResource(R.drawable.dialog_background)
+
+ val btnConfirm = dialogView.findViewById<Button>(R.id.btnConfirm)
+ btnConfirm.setOnClickListener {
+ dialog.dismiss()
+ }
+ val btnCancel = dialogView.findViewById<Button>(R.id.btnCancel)
+ btnCancel.setOnClickListener {
+ dialog.dismiss()
+ // 退出整个应用
+ finishAffinity() // 关闭当前Activity和它之上的所有Activity
+ exitProcess(0) // 终止应用进程(需要引入 kotlin.system.exitProcess)
+ }
+
+ // 👇 设置可点击文字逻辑
+ val textView = dialogView.findViewById<TextView>(R.id.dialogMessage2)
+ val content = "您可以阅读「服务使用协议」和「隐私保护政策」了解相关信息。如果您同意,请点击同意,开始使用我们的服务。"
+ val spannableString = SpannableString(content)
+
+ val serviceStart = content.indexOf("「服务使用协议」")
+ val serviceEnd = serviceStart + "「服务使用协议」".length
+ val privacyStart = content.indexOf("「隐私保护政策」")
+ val privacyEnd = privacyStart + "「隐私保护政策」".length
+
+ spannableString.setSpan(object : ClickableSpan() {
+ override fun onClick(widget: View) {
+ startContentActivity("用户协议", "服务使用协议")
+// Toast.makeText(this@LoginActivity, "点击了服务使用协议", Toast.LENGTH_SHORT).show()
+ // 可跳转 WebViewActivity 或打开链接
+ }
+
+ override fun updateDrawState(ds: TextPaint) {
+ super.updateDrawState(ds)
+ ds.color = Color.parseColor("#1E88E5")
+ ds.isUnderlineText = false
+ }
+ }, serviceStart, serviceEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+
+ spannableString.setSpan(object : ClickableSpan() {
+ override fun onClick(widget: View) {
+ startContentActivity("隐私协议", "隐私保护政策")
+// Toast.makeText(this@LoginActivity, "点击了隐私保护政策", Toast.LENGTH_SHORT).show()
+ }
+
+ override fun updateDrawState(ds: TextPaint) {
+ super.updateDrawState(ds)
+ ds.color = Color.parseColor("#1E88E5")
+ ds.isUnderlineText = false
+ }
+ }, privacyStart, privacyEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+
+ textView.text = spannableString
+ textView.movementMethod = LinkMovementMethod.getInstance()
+
+ dialog.show()
+ }
+
+
+ /* private fun showConfirmDialog() {
+
+ val dialogView = LayoutInflater.from(this).inflate(R.layout.login_protocol_dialog_custom, null)
+
+ val dialog = AlertDialog.Builder(this)
+ .setView(dialogView)
+ .create()
+
+ // 设置自定义背景
+ dialog.window?.setBackgroundDrawableResource(R.drawable.dialog_background)
+
+ // 获取按钮并设置点击事件
+ val btnConfirm = dialogView.findViewById<Button>(R.id.btnConfirm)
+ btnConfirm.setOnClickListener {
+ // 将协议勾选上
+ dialog.dismiss()
+ }
+
+ // 显示对话框
+ dialog.show()
+ }*/
+
+ private fun startContentActivity(id: String, title: String) {
+ val intent = Intent(this, ContentDetailActivity::class.java).apply {
+ putExtra(ContentDetailActivity.ID, id)
+ putExtra(ContentDetailActivity.EXTRA_TITLE, title)
+ }
+ startActivity(intent)
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3