Kotlin高仿微信-第31篇-支付-服务

news2024/11/24 0:28:49

 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="@drawable/wc_base_bg">

        <include
            layout="@layout/wc_base_top_title"/>

        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/payment_item"
            android:layout_width="match_parent"
            android:layout_height="160dp"
            android:layout_marginTop="20dp"
            android:layout_marginHorizontal="12dp"
            app:layout_constraintStart_toStartOf="parent"
            android:background="#48d17a"
            app:layout_constraintTop_toBottomOf="@+id/base_top_root_layout">

            <LinearLayout
                android:id="@+id/payment_collection_layout"
                android:layout_width="150dp"
                android:layout_height="120dp"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toStartOf="@+id/payment_wallet_layout"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                android:gravity="center"
                android:orientation="vertical">
                <ImageView
                    android:id="@+id/payment_collection"
                    android:layout_width="60dp"
                    android:layout_height="60dp"
                    android:src="@drawable/wc_payment_collection"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="收付款"
                    android:textColor="@color/white"
                    android:textSize="20sp"/>

            </LinearLayout>

            <LinearLayout
                android:id="@+id/payment_wallet_layout"
                android:layout_width="150dp"
                android:layout_height="120dp"
                app:layout_constraintStart_toEndOf="@+id/payment_collection_layout"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                android:gravity="center"
                android:orientation="vertical">
                <ImageView
                    android:id="@+id/payment_wallet_icon"
                    android:layout_width="60dp"
                    android:layout_height="60dp"
                    android:src="@drawable/wc_payment_wallet"/>
                <TextView
                    android:id="@+id/payment_wallet"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="钱包"
                    android:textColor="@color/white"
                    android:textSize="20sp"/>
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/payment_balance"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="¥123456789.00"
                    android:textColor="#E8E8E8"
                    android:textSize="16sp"/>

            </LinearLayout>


        </androidx.constraintlayout.widget.ConstraintLayout>

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

/**
 * author : wangning
 * email : maoning20080809@163.com
 * Date : 2022/4/7 16:22
 * description : 服务页面
 */
class PaymentFragment : BaseDataBindingFragment<WcMeFragmentPaymentBinding>() {


    override fun getLayoutRes() = R.layout.wc_me_fragment_payment
    private val userViewModel : UserViewModel by viewModels()
    private var resultBalance : Float = 0f

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        super.builder().setTitleContent(R.string.wc_base_top_payment)

        //先判断是否已经注册
        if(!EventBus.getDefault().isRegistered(this)){
            EventBus.getDefault().register(this)
        }

        //收付款
        payment_collection_layout.setOnClickListener {
            Navigation.findNavController(it).navigate(R.id.action_receive_payment)
        }

        //钱包
        payment_wallet_layout.setOnClickListener {
            Navigation.findNavController(it).navigate(R.id.action_small_change)
        }

        TagUtils.d(" PaymentFragment主页 resultBalance  =  ${resultBalance}");

        var account = DataStoreUtils.getAccount()
        userViewModel.getUserLocal(account)
        userViewModel.userBeanLocal.observe(viewLifecycleOwner){
            it?.let {
                TagUtils.d("2 PaymentFragment主页 resultBalance  =  ${it.balance}");
                payment_balance.text = CommonUtils.Base.getFormatBalanceUnit(it.balance)
            }
        }
    }


    @Subscribe(threadMode = ThreadMode.MAIN)
    fun onMessageCallback(rechargeBalanceBean: RechargeBalanceBean) {
        TagUtils.d(" EventBus 返回的值:${rechargeBalanceBean.balance}");
        resultBalance = rechargeBalanceBean.balance
        payment_balance.text = CommonUtils.Base.getFormatBalanceUnit(rechargeBalanceBean.balance)
    }

    override fun onDestroy() {
        super.onDestroy()
        EventBus.getDefault().unregister(this)
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/53691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hadoop集群中存在配置较低的数据节点应用如何应对磁盘数据溢满的问题之rebalance

现象 登录hdfs web ui发现集群中一个节点的负载远高于另外的节点 分析 一般情况下集群在数据盘配置一样&#xff0c;几乎使用不到rebalance&#xff0c;但是我们的集群中有一个比较小的数据节点&#xff0c;因此我们需要关注各节点数据分布情况&#xff0c;及时进行rebalan…

手撕一个图片色卡提取器,可自定义提取色卡数量!

在一些特殊的业务场景中&#xff0c;我们需要一次性提取一张图片中的色卡信息&#xff0c;并且需要使用十六进制的颜色表示方法进行展示。 今天得空做了一个小工具&#xff0c;用来自定义的提取某一张图片中的色卡信息&#xff0c;需要提取某张图片中的色卡可以自行选择。 实现…

Python基础之SQLite数据库

Python与SQLite数据库 一、概述 对于非常简单的应用而言&#xff0c;使用文件作为持久化存储通常就足够了&#xff0c;但是大多数复杂的数据驱动的应用则需要全功能的关系数据库。 SQLite 的目标则是介于两者之间的中小系统。它量级轻、速度快&#xff0c;没有服务器&#xf…

数学辅导微信小程序设计与实现的源码+文档

摘 要 网络的广泛应用给生活带来了十分的便利。所以把数学辅导管理与现在网络相结合&#xff0c;利用java技术建设数学辅导微信小程序&#xff0c;实现数学辅导的信息化。则对于进一步提高数学辅导管理发展&#xff0c;丰富数学辅导管理经验能起到不少的促进作用。 数学辅导微…

【python】 int、float、double与16进制字符串的互相转换

import structdef intToHex(num): # int转16进制return hex(num)[2:].upper()def hexToInt(hexString): # 16进制转intreturn int(hexString, 16)def floatToHex(floatValue): # float转16进制return struct.pack(>f, floatValue).hex().upper()def hexToFloat(hexString…

chloris.earth ——Chloris 全球生物量 2003 - 2019 数据平台

概述 Chloris 全球生物量 2003 - 2019 数据集提供了地球陆地木本植被生态系统地上生物量存量和变化的估计值。它涵盖 2003 年至 2019 年期间&#xff0c;按年度时间步长计算。全球数据集的空间分辨率约为 4.6 公里。 这些地图和数据集是通过结合来自星载卫星的多个遥感测量结果…

如何保证PCB孔铜高可靠?

PCB板上电路导通&#xff0c;都是靠线路或过孔来传导的&#xff0c;从PCB制造流程可以看出&#xff0c;PCB完成铜厚是由PCB基铜厚度加板电厚度加图电厚度三部分组成&#xff0c;PCB孔铜厚度&#xff0c;是在两个电镀流程中完成&#xff0c;即全板电镀孔铜的厚度加图形电镀孔铜厚…

k8s概念

文章目录k8s概念为什么叫他k8s以及谁开发的k8s是什么k8s特点时光回溯传统部署时代&#xff1a;虚拟化部署时代容器部署时代&#xff1a;容器的优点为什么需要k8s&#xff0c;他能做什么&#xff1f;Kubernetes 不是什么&#xff1f;k8s概念 为什么叫他k8s以及谁开发的 kubern…

EO.Web浏览器 v2023.0.18.0 for .NET -- EO.WebBrowser

.NET PDF 和 Web 浏览器从未如此简单 使用 PDF 文件生成/处理能力快速扩展您的 .NET 应用程序&#xff0c;或者将流行的 Chromium 浏览器引擎与广泛的自定义选项&#xff08;如自定义资源加载器和 JavaScript 扩展&#xff09;无缝集成用于 UI 或后台任务。 当前&#xff1a;v2…

steam搬砖项目,小白也能月入过万的副业项目

steam搬砖这个项目&#xff0c;我们做了3年了&#xff0c;项目很稳定。由于项目是轻资产&#xff0c;门槛低&#xff0c;按照我们的方法&#xff0c;只要你足够勤快&#xff0c;这是一个能帮你赚取人生的第一桶金的项目。 仅代表个人收益 steam项目原理就是&#xff1a;倒卖cs…

移动端异构运算技术 - GPU OpenCL 编程(基础篇)

一、前言 随着移动端芯片性能的不断提升&#xff0c;在移动端上实时进行计算机图形学、深度学习模型推理等计算密集型任务不再是一个奢望。在移动端设备上&#xff0c;GPU 凭借其优秀的浮点运算性能&#xff0c;以及良好的 API 兼容性&#xff0c;成为移动端异构计算中非常重要…

小巧有劲的按摩好手,能装兜里的护理工具,小鸟斗士筋膜枪体验

现在很多朋友为了身体健康&#xff0c;平时都会去做些简单的健身&#xff0c;因为之前长期不运动&#xff0c;所以健身后很容易有肌肉酸痛等问题&#xff0c;对此&#xff0c;筋膜枪是个很好用的工具&#xff0c;可以有效促进血液循环&#xff0c;还能够缓解久坐所导致的腰背酸…

java面试强基(16)

说说 List, Set, Queue, Map 四者的区别&#xff1f; List(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序&#xff0c;存储的元素是有序的、可…

壳寡糖/肉桂醛修饰乳清蛋白,乳清浓缩蛋白-羟丙基甲基纤维素复合材料

产品名称&#xff1a;壳寡糖修饰乳清蛋白 英文名称&#xff1a;Chitosan-whey protein 用途&#xff1a;科研 状态&#xff1a;固体/粉末/溶液 产品规格&#xff1a;1g/5g/10g 保存&#xff1a;冷藏 储藏条件&#xff1a;-20℃ 储存时间&#xff1a;1年 壳寡糖&#xff0c;又叫…

【图文详解】入职必备——SVN使用教程

一、SVN基本操作 1、进入svnbucket官网&#xff0c;创建一个空项目&#xff0c;学习svn 2、创建好测试项目后&#xff0c;复制对应地址 3、右键点击“SVN 检出” 4、粘贴“版本库URL”&#xff0c;填写“检出至目录”&#xff0c;最后点击“确定” 5、完善“用户名”和“密码”…

3.9、以太网交换机自学习和转发帧的流程

3.9、以太网交换机自学习和转发帧的流程 1.以太网交换机工作在数据链路层&#xff08;也包括物理层&#xff09; 说明&#xff1a;目前市场上也有包含网络层部分功能的交换机&#xff0c;称为三层交换机 2.以太网交换机收到帧后&#xff0c;在帧交换表中查找的目的MAC地址所…

cilantro 点云均值漂移算法(MeanShift)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 均值漂移算法是一种非常经典的层次聚类方式,已在二维图像中得到了广泛的应用。这里我们也已二维图像为例来阐述其整个计算过程: 算法基本思想:如下图所示,左侧为实际的图像特征的分布,右侧为基于图像特征分布计…

马斯克让猴子学会意念打字!还用人脑模型演示背后原理,电线入脑清晰可见...

杨净 Pine 发自 凹非寺量子位 | 公众号 QbitAI一鸽再鸽&#xff0c;马斯克Neuralink终于官宣新进展。果然不出所料&#xff0c;与此前大家预想的意念打字相关。不过get这项技能的不是人类&#xff0c;而是他们的老朋友——猴子。根据黄色提示“指哪打哪”&#xff1a;我可以吃点…

第 04 章_逻辑架构

第 04 章_逻辑架构1. 逻辑架构剖析1. 1 服务器处理客户端请求1.2 Connectors1.3 第 1 层&#xff1a;连接层1.4 第 2 层&#xff1a;服务层1. 5 第 3 层&#xff1a;引擎层1. 6 存储层1. 7 小结2. SQL执行流程2. 1 MySQL 中的 SQL执行流程3. 优化器 &#xff1a;4. 执行器 &…

Vue3 —— 怎样利用vite创建一个vue3项目

前言 本文主要讲解如何利用vitevue创建第一个项目以及vue3的基础知识点 一、创建一个vue3项目 这里我们主要介绍如何利用 vitevue3创建项目 1.有关vite Vite&#xff08;法语意为 "快速的"&#xff0c;发音 /vit/&#xff0c;发音同 "veet"&#xff09;是…