From a633841f1d282244e42d45a84aca55533df34229 Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期二, 01 四月 2025 15:02:18 +0800
Subject: [PATCH] 1.vip续费页面-数据统计及跳转
---
app/src/main/res/mipmap/overlay2.jpg | 0
app/src/main/res/mipmap/overlay.png | 0
app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt | 70 +++++++++++++++++++++++
app/src/main/res/mipmap/avatar_default.png | 0
app/src/main/res/layout/fragment_dashboard.xml | 50 ++++++++++++++++
app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt | 6 +
app/src/main/res/mipmap/vip_crown.png | 0
app/src/main/res/drawable/overlay_black_background.xml | 17 +++++
8 files changed, 141 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
index 967a83c..9a7060f 100644
--- a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
@@ -21,9 +21,18 @@
import java.util.*
import java.text.SimpleDateFormat
import android.graphics.Color
+import android.widget.Button
import android.widget.GridLayout
+import android.widget.Toast
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.lifecycleScope
+import com.bumptech.glide.Glide
+import com.example.firstapp.database.response.UserInfo
+import com.example.firstapp.database.service.RetrofitClient
import com.example.firstapp.model.DailyStat
+import com.example.firstapp.utils.PreferencesManager
import com.github.mikephil.charting.components.YAxis
+import kotlinx.coroutines.launch
class DashboardFragment : Fragment() {
@@ -35,6 +44,9 @@
private lateinit var barChart: BarChart
private lateinit var pieChart: PieChart
private lateinit var heatmapView: View
+ private var currentUserInfo: UserInfo? = null // 确保使用你的实际数据类
+
+
enum class DateType {
DAY, WEEK, MONTH, YEAR
}
@@ -49,6 +61,12 @@
return binding.root
}
+ override fun onResume() {
+ super.onResume()
+ // 重新加载用户信息
+ loadUserInfo()
+ }
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -61,7 +79,28 @@
setupView(view)
updateDateDisplay()
loadPackages()
+
+ // 遮罩层
+ loadUserInfo()
+
+ // 遮罩层点击时间
+ binding.viewOverlay.setOnClickListener {
+ // 跳转到vipActivity
+ val intent = android.content.Intent(requireContext(), com.example.firstapp.activity.VipActivity::class.java)
+ startActivity(intent)
+ }
}
+
+ private fun showOverlay() {
+ binding.viewOverlay.visibility = View.VISIBLE
+ binding.overlayContent.visibility = View.VISIBLE
+ }
+
+ private fun hiddleOverlay() {
+ binding.viewOverlay.visibility = View.GONE
+ binding.overlayContent.visibility = View.GONE
+ }
+
private fun setupRecyclerView() {
binding.recyclerPackages.apply {
@@ -554,4 +593,35 @@
super.onDestroyView()
_binding = null
}
+ private fun loadUserInfo() {
+
+ lifecycleScope.launch {
+ try {
+ // 从本地获取保存的手机号
+ val savedPhone = PreferencesManager.getPhone()
+ if (savedPhone.isNullOrEmpty()) {
+ Toast.makeText(context, "用户未登录", Toast.LENGTH_SHORT).show()
+ return@launch
+ }
+
+ val response = RetrofitClient.apiService.getUserInfo(savedPhone)
+ if (response.code == "0" && response.data != null) {
+ // 保存用户信息
+ currentUserInfo = response.data
+ val userInfo = response.data
+ if(userInfo.isMember){
+ hiddleOverlay()
+ }else{
+ // 显示遮罩层
+ showOverlay()
+ }
+
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Toast.makeText(context, "获取用户信息失败", Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt b/app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt
index eb1c203..0d3247e 100644
--- a/app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt
@@ -54,7 +54,8 @@
Glide.with(this)
.load(viewModel.cover)
.transform(RoundedCorners(100)) // 设置圆角
- .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+// .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+ .error(R.mipmap.avatar_default)
.listener(object : RequestListener<Drawable> {
override fun onResourceReady(
resource: Drawable?,
@@ -85,7 +86,8 @@
Glide.with(this)
.load(viewModel.vipCover)
.transform(RoundedCorners(100)) // 设置圆角
- .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+// .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+ .error(R.mipmap.vip_no)
.listener(object : RequestListener<Drawable> {
override fun onResourceReady(
resource: Drawable?,
diff --git a/app/src/main/res/drawable/overlay_black_background.xml b/app/src/main/res/drawable/overlay_black_background.xml
new file mode 100644
index 0000000..5afeda5
--- /dev/null
+++ b/app/src/main/res/drawable/overlay_black_background.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- 圆角 10dp -->
+ <corners android:radius="100dp" />
+
+ <!-- 背景色:黑色 -->
+<!-- <solid android:color="#FFFFFF" />-->
+ <solid android:color="#000000" />
+
+ <!-- 内边距 -->
+ <padding android:left="10dp"
+ android:top="10dp"
+ android:right="10dp"
+ android:bottom="10dp"/>
+
+ <stroke android:width="0dp" android:color="#FFFFFF"/>
+</shape>
diff --git a/app/src/main/res/layout/fragment_dashboard.xml b/app/src/main/res/layout/fragment_dashboard.xml
index ad51843..78a1d79 100644
--- a/app/src/main/res/layout/fragment_dashboard.xml
+++ b/app/src/main/res/layout/fragment_dashboard.xml
@@ -159,4 +159,54 @@
</ViewFlipper>
</androidx.core.widget.NestedScrollView>
+ <!-- 🔹 遮罩层 -->
+ <View
+ android:id="@+id/view_overlay"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@mipmap/overlay2"
+ android:elevation="10dp"
+ android:visibility="gone"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent" />
+
+ <!-- 🔹 遮罩层上的按钮 -->
+ <!-- 🔹 遮罩层上的内容容器(LinearLayout) -->
+ <LinearLayout
+ android:id="@+id/overlay_content"
+ android:layout_width="300dp"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:orientation="horizontal"
+ android:padding="10dp"
+ android:background="@drawable/overlay_black_background"
+ android:elevation="20dp"
+ android:translationZ="20dp"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent">
+
+
+ <ImageView
+ android:id="@+id/overlay_content_vip_image"
+ android:layout_width="40dp"
+ android:layout_height="40dp"
+ android:layout_marginLeft="10dp"
+ android:layout_marginRight="10dp"
+ android:scaleType="centerCrop"
+ android:src="@mipmap/vip_crown"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <!-- 🔹 示例内容:标题 -->
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="免费查看统计数据"
+ android:textSize="18sp"
+ android:textColor="#EEBC93" />
+
+ </LinearLayout>
+
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/mipmap/avatar_default.png b/app/src/main/res/mipmap/avatar_default.png
new file mode 100644
index 0000000..6b95b68
--- /dev/null
+++ b/app/src/main/res/mipmap/avatar_default.png
Binary files differ
diff --git a/app/src/main/res/mipmap/overlay.png b/app/src/main/res/mipmap/overlay.png
new file mode 100644
index 0000000..9905124
--- /dev/null
+++ b/app/src/main/res/mipmap/overlay.png
Binary files differ
diff --git a/app/src/main/res/mipmap/overlay2.jpg b/app/src/main/res/mipmap/overlay2.jpg
new file mode 100644
index 0000000..0dc91e8
--- /dev/null
+++ b/app/src/main/res/mipmap/overlay2.jpg
Binary files differ
diff --git a/app/src/main/res/mipmap/vip_crown.png b/app/src/main/res/mipmap/vip_crown.png
new file mode 100644
index 0000000..c86537f
--- /dev/null
+++ b/app/src/main/res/mipmap/vip_crown.png
Binary files differ
--
Gitblit v1.9.3