zhujie
2025-04-03 fe04012057d024770e0180543483d393281a542f
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
    }
}