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