app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/drawable/overlay_black_background.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/fragment_dashboard.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/mipmap/avatar_default.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/mipmap/overlay.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/mipmap/overlay2.jpg | 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/mipmap/vip_crown.png | 补丁 | 查看 | 原始文档 | blame | 历史 |
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() } } } } 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?, 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> 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> app/src/main/res/mipmap/avatar_default.png
app/src/main/res/mipmap/overlay.png
app/src/main/res/mipmap/overlay2.jpg
app/src/main/res/mipmap/vip_crown.png