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

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

效果图:

实现代码:

<?xml version="1.0" encoding="utf-8"?>
<layout><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/color_FFD700"><include layout="@layout/wc_base_top_title" /><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/qrcode_receive_layout"android:layout_width="match_parent"android:layout_height="400dp"android:layout_marginHorizontal="12dp"android:layout_marginVertical="20dp"android:background="#FFFFFF"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/base_top_root_layout"><ImageViewandroid:id="@+id/qrcode_receive_qrcode"android:layout_width="200dp"android:layout_height="200dp"android:layout_marginTop="12dp"android:src="@drawable/ic_launcher"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/qrcode_receive_balance" /><LinearLayoutandroid:id="@+id/qrcode_receive_from_divide"android:layout_width="match_parent"android:layout_height="0.5dp"android:layout_marginHorizontal="12dp"android:layout_marginTop="8dp"android:background="@color/gray"android:orientation="horizontal"android:visibility="gone"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/qrcode_receive_set_amount" /><LinearLayoutandroid:id="@+id/qrcode_receive_from_layout"android:layout_width="match_parent"android:layout_height="40dp"android:layout_marginHorizontal="12dp"android:layout_marginTop="12dp"android:orientation="horizontal"android:visibility="gone"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/qrcode_receive_set_amount"><androidx.appcompat.widget.AppCompatImageViewandroid:id="@+id/qrcode_receive_from_avatar"android:layout_width="30dp"android:layout_height="30dp"android:layout_gravity="center_vertical"android:src="@drawable/ic_launcher" /><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/qrcode_receive_from_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginLeft="12dp"android:text="名称"android:textColor="@color/black" /><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/qrcode_receive_from_balance"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="center_vertical|right"android:layout_marginRight="12dp"android:gravity="right"android:text="金额"android:textColor="@color/gray" /></LinearLayout><TextViewandroid:id="@+id/qrcode_receive_tip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:text="二维码收款"android:textColor="#FFD700"android:textSize="16sp"android:textStyle="bold"app:layout_constraintBottom_toBottomOf="@+id/qrcode_receive_icon"app:layout_constraintStart_toEndOf="@+id/qrcode_receive_icon"app:layout_constraintTop_toTopOf="@+id/qrcode_receive_icon" /><TextViewandroid:id="@+id/qrcode_receive_add_friend_tip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="12dp"android:text="无需加好友,扫收款码向我付钱"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/qrcode_receive_icon" /><TextViewandroid:id="@+id/qrcode_receive_balance"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:text="¥0.00"android:textColor="@color/black"android:textSize="24sp"android:textStyle="bold"android:visibility="gone"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/qrcode_receive_add_friend_tip" /><androidx.appcompat.widget.AppCompatImageViewandroid:id="@+id/qrcode_receive_icon"android:layout_width="40dp"android:layout_height="40dp"android:layout_marginLeft="10dp"android:layout_marginTop="12dp"android:src="@drawable/wc_qrcode_receive_icon"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/qrcode_receive_layout" /><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/qrcode_receive_set_amount"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:text="设置金额"android:textColor="@color/black"android:textSize="14sp"app:layout_constraintStart_toStartOf="@+id/qrcode_receive_qrcode"app:layout_constraintTop_toBottomOf="@+id/qrcode_receive_qrcode" /><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/qrcode_receive_save_qrcode"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:text="保存收款码"android:textColor="@color/black"android:textSize="14sp"app:layout_constraintEnd_toEndOf="@+id/qrcode_receive_qrcode"app:layout_constraintTop_toBottomOf="@+id/qrcode_receive_qrcode" /></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/qrcode_receive_mask_layout"android:layout_width="match_parent"android:layout_height="360dp"android:layout_marginHorizontal="12dp"android:layout_marginVertical="20dp"android:background="#FFFFFF"android:visibility="gone"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/base_top_root_layout"><androidx.appcompat.widget.AppCompatImageViewandroid:id="@+id/qrcode_receive_mask_icon"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="80dp"android:layout_width="50dp"android:layout_height="50dp"android:src="@drawable/ic_launcher"/><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/qrcode_receive_mask_name"app:layout_constraintStart_toStartOf="@+id/qrcode_receive_mask_icon"app:layout_constraintEnd_toEndOf="@+id/qrcode_receive_mask_icon"app:layout_constraintTop_toBottomOf="@+id/qrcode_receive_mask_icon"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="名称"android:textSize="20sp"android:textColor="@color/black"/><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/qrcode_receive_mask_balance"app:layout_constraintStart_toStartOf="@+id/qrcode_receive_mask_icon"app:layout_constraintEnd_toEndOf="@+id/qrcode_receive_mask_icon"app:layout_constraintTop_toBottomOf="@+id/qrcode_receive_mask_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="30dp"android:text="¥0.00"android:textSize="30sp"android:textColor="@color/black"/></androidx.constraintlayout.widget.ConstraintLayout></androidx.constraintlayout.widget.ConstraintLayout>
</layout>
/*** Author : wangning* Email : maoning20080809@163.com* Date : 2022/5/22 16:12* Description : 二维码收款*/
class QRCodeReceiveFragment : BaseDataBindingFragment<WcQrcodeReceiveBinding>() {private var resultBalance : Float = 0foverride fun getLayoutRes()  = R.layout.wc_qrcode_receiveprivate var navController : NavController? = nulloverride fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)super.builder().setTitleContent(R.string.wc_base_top_qrcode_payment).setTitleColor(R.color.white).setBack(R.drawable.wc_white_back)UIStatusUtils.setStatusBarColor(requireActivity(), BaseUtils.getColor(R.color.color_FFD700))navController = findNavController()//设置金额页面点击返回接收的值navController?.currentBackStackEntry?.savedStateHandle?.getLiveData<Float>(CommonUtils.QRCommon.BALANCE)?.observe(viewLifecycleOwner){TagUtils.d("接收返回金额:${it}")resultBalance = itif(resultBalance > 0){qrcode_receive_balance.visibility = View.VISIBLErefresh()}}qrcode_receive_set_amount.setOnClickListener {navController?.navigate(R.id.action_qrcode_set_amount)}refresh()if(!EventBus.getDefault().isRegistered(this)){EventBus.getDefault().register(this)}}@Subscribe(threadMode = ThreadMode.MAIN)fun onMessageCallback(paymentBean: PaymentBean) {TagUtils.d("二维码扫描接收的值:${paymentBean.balance} , ${paymentBean.fromAccount} , ${paymentBean.toAccount}")qrcode_receive_from_layout.visibility = View.VISIBLEqrcode_receive_from_divide.visibility = View.VISIBLEif(paymentBean == null){qrcode_receive_from_balance.text = "支付失败!"} else if(paymentBean.operator == CommonUtils.User.OPERATOR_PLUS){qrcode_receive_from_balance.text = paymentBean.balance.toString()BaseUtils.showAvatar(paymentBean.fromAccount, qrcode_receive_from_avatar,qrcode_receive_from_name)processMask(paymentBean.fromAccount, paymentBean.balance)//暂停使用语言播放/*CoroutineScope(Dispatchers.Main).launch {delay(2000)AudioUtils().processStart(paymentBean.balance.toInt())}*/}}//刷新页面private fun refresh(){qrcode_receive_balance.text = resultBalance.toString()var qrBalance = 0f//如果不输入金额, 默认传递0if(resultBalance >  0){qrBalance = resultBalance}CoroutineScope(Dispatchers.IO).launch {var account = DataStoreUtils.getAccount()var userBean =  UserRepository.getUserByAccount(account)var filePath = CommonUtils.Base.getReallyImage(userBean.avatar)var content = CommonUtils.QRCommon.QR_RECEIVE_CODE + qrBalance + ":" + accountCoroutineScope(Dispatchers.Main).launch {//在二维码中显示头像GlideUtils.loadQRCode(qrcode_receive_qrcode, content, filePath)}}}//收款成功后,显示动画private fun processMask(account : String, balace: Float){qrcode_receive_mask_layout.visibility = View.VISIBLEqrcode_receive_mask_balance.text = CommonUtils.Base.getFormatBalanceUnit(balace)BaseUtils.showAvatar(account, qrcode_receive_mask_icon, qrcode_receive_mask_name)CoroutineScope(Dispatchers.Main).launch {delay(1000)val animationSet = AnimationSet(true)animationSet.setAnimationListener(object : Animation.AnimationListener{override fun onAnimationEnd(p0: Animation?) {qrcode_receive_mask_layout.visibility = View.GONE}override fun onAnimationRepeat(p0: Animation?) {}override fun onAnimationStart(p0: Animation?) {}})var scaleAnimation = ScaleAnimation(1f,0.0f,1f,0.0f,Animation.RELATIVE_TO_SELF,1f,Animation.RELATIVE_TO_SELF,1f)scaleAnimation.duration = 1500animationSet.addAnimation(scaleAnimation)qrcode_receive_mask_layout.startAnimation(animationSet)}}override fun onDestroy() {super.onDestroy()EventBus.getDefault().unregister(this)UIStatusUtils.setStatusBarColor(requireActivity(), BaseUtils.getColor(R.color.color_48d17a))}}

Kotlin高仿微信-第35篇-支付-二维码收款(二维码)相关推荐

  1. Kotlin高仿微信-第34篇-支付-向商家付款(二维码)

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

  2. Kotlin高仿微信-第32篇-支付-我的零钱

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

  3. Kotlin高仿微信-第11篇-单聊-语音

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

  4. Kotlin高仿微信-第14篇-单聊-视频通话

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

  5. Kotlin高仿微信-第20篇-个人信息

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

  6. Kotlin高仿微信-第6篇-主页-我的

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

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

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

  8. Kotlin高仿微信-第26篇-朋友圈-选择图片、小视频对话框

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

  9. Kotlin高仿微信-第8篇-单聊

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

最新文章

  1. 使用libjpeg进行图片压缩(哈夫曼算法,无损压缩)
  2. golang中的目录操作
  3. 神秘的“阿里星”是一群怎么样的人
  4. Parallel Extensions CTP第二版发布
  5. mvc各层简单清晰的描述
  6. VideoMatch: Matching based Video Object Segmentation
  7. 用于UML前端展示的jsuml2插件
  8. 剑指offer--矩阵中的路径
  9. 《谁动了我的奶酪》感悟
  10. Excel数据的筛选
  11. vs2017c语言playsound,VS2010播放.WAW音频文件
  12. S型加减速程序,C++,PLC,AGV
  13. HTML iframe 标签
  14. ____ To All Girls  Boys
  15. Java教程!Java标识符与关键字的区别是什么?
  16. 通过 汇编了解C语言 指针 悬垂指针概念
  17. 论文管理工具:Zotero使用心得
  18. 介绍几种苦瓜的吃法,给大家降降火
  19. 抢课php,科学网—抢课 - 卢文发的博文
  20. web自动化测试入门篇04——selenium+python基础方法封装

热门文章

  1. mysql slow query_Mysql 开启 Slow 慢查询
  2. 电子邮件服务器名设置方法,电子邮件 outlook express 怎样设置电子邮件服务器名?...
  3. 云计算技术基础【1】
  4. 【老本行的碎碎念】- - 关于新闻传播的整体认识和下一步规划 - - 开始继续充电趴!~ :D
  5. 10个常用的数据分析商业模型之价值链分析模型(三)
  6. 排行前1000的docker容器中,20%存在root帐户配置错误
  7. 格式工厂 wav 比特率_【资源分享】格式工厂FORMAT FACTORY-5.1.0
  8. FCN的学习及理解(Fully Convolutional Networks for Semantic Segmentation)
  9. 邮政快递与物流行业舆情监测系统方案
  10. 音频、视频Flash文件(萌新必看)