• Kotlin高仿微信-第58篇-开通VIP


      Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。

    Kotlin高仿微信-项目实践58篇,点击查看详情

    效果图:

    实现代码:

    **
     * 开通vip确认框
     */
    private fun showVipConfirmDialog(month: Int, vipBean: VipBean){
    
        if(month < 1 || vipBean == null){
            ToastUtils.makeText(R.string.wc_vip_confirm_show_error)
            return
        }
        getFocus(true)
        var view = LayoutInflater.from(requireContext()).inflate(R.layout.wc_vip_confirm_view, null)
        var width = DisplayUtils.getScreenWidth() - BaseUtils.getDimension(R.dimen.distance_40) * 2
        val popupWindow = PopupWindow(view, width, ViewGroup.LayoutParams.WRAP_CONTENT)
        popupWindow.isOutsideTouchable = false //点击弹窗外部是否取消弹窗
    
        //弹窗出现外部为阴影
        val attributes: WindowManager.LayoutParams = requireActivity().window.getAttributes()
        attributes.alpha = 0.5f
        requireActivity().window.setAttributes(attributes)
        //弹窗取消监听 取消之后恢复阴影
        popupWindow.setOnDismissListener {
            val attributes: WindowManager.LayoutParams = requireActivity().window.getAttributes()
            attributes.alpha = 1f
            requireActivity().window.setAttributes(attributes)
            getFocus(false)
        }
        popupWindow.showAtLocation(vip_recyclerview, Gravity.CENTER, 0, 0)
    
        var accountTextView = view.findViewById(R.id.vip_confirm_account)
        var nameTextView = view.findViewById(R.id.vip_confirm_name)
        var monthTextView = view.findViewById(R.id.vip_confirm_month)
        accountTextView.text = BaseUtils.getString(R.string.wc_vip_manager_user_account, vipBean.userAccount)
        nameTextView.text = BaseUtils.getString(R.string.wc_vip_manager_user_name, vipBean.userName)
        monthTextView.text = BaseUtils.getString(R.string.wc_vip_confirm_month, "${month}")
        view.findViewById(R.id.vip_confirm_cancel).setOnClickListener {
            popupWindow.dismiss()
        }
    
        view.findViewById(R.id.vip_confirm_ok).setOnClickListener {
            popupWindow.dismiss()
            vipManagerViewModel.updateVip(vipBean.userAccount, vipBean.operatorAccount, month)
        }
    }

    /**
     * vip会员续费
     */
    fun updateVip(userAccount : String, operatorAccount : String, month : Int){
        if(TextUtils.isEmpty(userAccount)
            ||TextUtils.isEmpty(operatorAccount)
            || month < 1){
            isSuccessLiveData.postValue(false)
            return
        }
        CoroutineScope(Dispatchers.IO).launch {
            var result = VipManagerRepository.updateVip(userAccount, operatorAccount, month)
            isSuccessLiveData.postValue(result.isSuccess)
        }
    }

  • 相关阅读:
    到广阔的边缘市场去,浪潮信息首次发布全栈边缘计算软硬件新品
    springboot 集成webSocket
    AVL树的插入详解
    Docker 容器监控之CAdvisor+InfluxDB+Granfana
    go基础部分学习笔记记录
    Python&C++相互混合调用编程全面实战-30开启线程调用pyffmpeg扩展库的Read读取视帧函数
    Java注解最全详解(超级详细)
    外包就干了2个月,技术退步明显....
    Redis的Java客户端
    【大咖说Ⅴ】陈文亮教授:基于语言理解的信息抽取研究
  • 原文地址:https://blog.csdn.net/maoning20080808/article/details/128138605