From fe04012057d024770e0180543483d393281a542f Mon Sep 17 00:00:00 2001
From: zhujie <leon.zhu@cloudroam.com.cn>
Date: 星期四, 03 四月 2025 09:18:16 +0800
Subject: [PATCH] Merge branch 'master' of http://47.96.225.205:8888/r/FirstApp2

---
 app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt |  162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 162 insertions(+), 0 deletions(-)

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
new file mode 100644
index 0000000..0d3247e
--- /dev/null
+++ b/app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt
@@ -0,0 +1,162 @@
+package com.example.firstapp.ui.vip
+
+import android.graphics.Color
+import android.graphics.drawable.Drawable
+import androidx.fragment.app.viewModels
+import android.os.Bundle
+import android.util.Log
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.lifecycle.lifecycleScope
+import com.bumptech.glide.Glide
+import com.bumptech.glide.load.engine.GlideException
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners
+import com.bumptech.glide.request.RequestListener
+import com.bumptech.glide.request.target.Target
+import com.bumptech.glide.load.DataSource
+import com.example.firstapp.R
+
+import com.example.firstapp.databinding.FragmentMemberInfoCardBinding
+import kotlinx.coroutines.launch
+
+class MemberInfoCardFragment : Fragment() {
+
+
+    companion object {
+        fun newInstance() = MemberInfoCardFragment()
+    }
+
+     val viewModel: MemberInfoCardViewModel by viewModels()
+
+    // 绑定变量
+    private var _binding: FragmentMemberInfoCardBinding? = null
+    private val binding get() = _binding!!
+
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View {
+        // 使用 DataBindingUtil.inflate 来绑定布局
+        _binding = FragmentMemberInfoCardBinding.inflate(inflater, container, false)
+        binding.viewModel = viewModel
+        binding.lifecycleOwner = this
+
+        // 绑定头像
+
+        Glide.with(this)
+            .load(viewModel.cover)
+            .transform(RoundedCorners(100))  // 设置圆角
+//            .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+            .error(R.mipmap.avatar_default)
+            .listener(object : RequestListener<Drawable> {
+                override fun onResourceReady(
+                    resource: Drawable?,
+                    model: Any?,
+                    target: Target<Drawable>?,  // 正确使用 Target 作为泛型参数
+                    dataSource: DataSource?,  // 导入正确的 DataSource
+                    isFirstResource: Boolean
+                ): Boolean {
+                    Log.d("Glide", "Image loaded successfully")
+                    return false
+                }
+
+                override fun onLoadFailed(
+                    e: GlideException?,
+                    model: Any?,
+                    target: Target<Drawable>?,  // 正确使用 Target 作为泛型参数
+                    isFirstResource: Boolean
+                ): Boolean {
+                    Log.e("Glide", "Image load failed", e)
+                    return false
+                }
+            })
+            .into(binding.memberAvatarView)
+
+
+        // 绑定会员徽章
+
+        Glide.with(this)
+            .load(viewModel.vipCover)
+            .transform(RoundedCorners(100))  // 设置圆角
+//            .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+            .error(R.mipmap.vip_no)
+            .listener(object : RequestListener<Drawable> {
+                override fun onResourceReady(
+                    resource: Drawable?,
+                    model: Any?,
+                    target: Target<Drawable>?,  // 正确使用 Target 作为泛型参数
+                    dataSource: DataSource?,  // 导入正确的 DataSource
+                    isFirstResource: Boolean
+                ): Boolean {
+                    Log.d("Glide", "Image loaded successfully")
+                    return false
+                }
+
+                override fun onLoadFailed(
+                    e: GlideException?,
+                    model: Any?,
+                    target: Target<Drawable>?,  // 正确使用 Target 作为泛型参数
+                    isFirstResource: Boolean
+                ): Boolean {
+                    Log.e("Glide", "Image load failed", e)
+                    return false
+                }
+            })
+            .into(binding.memberImageView)
+
+
+        // 监听 cover 变化
+        viewLifecycleOwner.lifecycleScope.launch {
+            viewModel.cover.collect { coverUrl ->
+                Glide.with(this@MemberInfoCardFragment)
+                    .load(coverUrl)
+                    .transform(RoundedCorners(100))
+                    .error(R.drawable.error_placeholder)
+                    .into(binding.memberAvatarView)
+            }
+        }
+
+        // 监听 vipCover 变化
+        viewLifecycleOwner.lifecycleScope.launch {
+            viewModel.vipCover.collect { vipCoverUrl ->
+                Glide.with(this@MemberInfoCardFragment)
+                    .load(vipCoverUrl)
+                    .transform(RoundedCorners(100))
+                    .error(R.drawable.error_placeholder)
+                    .into(binding.memberImageView)
+            }
+        }
+
+        // 监听 background 变化
+        viewLifecycleOwner.lifecycleScope.launch {
+            viewModel.background.collect { backgroundColor ->
+//                binding.memberCardCardView.setBackgroundColor(Color.parseColor(backgroundColor))
+                binding.memberCardCardView.setBackgroundResource(backgroundColor)
+            }
+        }
+
+        viewLifecycleOwner.lifecycleScope.launch {
+            viewModel.color.collect { color ->
+                binding.phoneNumberText.setTextColor(Color.parseColor(color))
+                binding.memberStatus.setTextColor(Color.parseColor(color))
+            }
+        }
+
+        return binding.root
+    }
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        _binding = null
+    }
+
+
+}
\ No newline at end of file

--
Gitblit v1.9.3