售后进度控件

项目中需要创建一个展示退货退款进度的控件。首先尝试通过控件组合实现,利用ConstraintLayout配合TextView和ImageView,但代码繁琐且不易维护。于是采用自定义View的方式优化,简化代码并提高灵活性。在自定义View中,实现了动态控制步骤显示的高效解决方案。
摘要由CSDN通过智能技术生成

项目需求:

项目中要做一个退货退款或是退货状态下的进度显示:
在这里插入图片描述
在这里插入图片描述

实现:

方案一:采用控件组合方式。

在实际开发中,我采用的是ConstraintLayout做为根布局,将textview,imageview组合,利用控件相互制约的方式,实现控件平分宽度。
这种实现起来简单,但是代码写得很繁琐,尤其是控件多的时候。
而且这里步骤也不是固定的,比如在退货退款状态下,就多了一步,那么代码中也就相应要对退件寄出这步做显示和隐藏控制。
所以,在项目上线之后,利用业务时间,就单独画了一个控件,也是就接下来要讲的方案二:

方案二:采用自定义view的方式

效果如下所示:
在这里插入图片描述
关键代码如下:

//1. 确定间距 space = width/totalStep
//2. 确定圆点,图片,字体的坐标
private fun initCirclePoints() {
   
        circleDots.clear()
        textDots.clear()
        bitmapDots.clear()
        var textHeight = mBound.bottom-mBound.top
        var textWidth = mBound.right -mBound.left
        Log.d("hxy ","textHeight = $textHeight,textWidth=$textWidth")
        var textPoint = padding*2+textHeight
        var offset = circleRadius/2
        for(i in 0 until totalStep){
   
            //第一个圆的位置:
            when (i) {
   
                0 -> {
   
                    var pointFirst = PointF(0f + circleRadius, heightSize / 2.toFloat())
                    circleDots.add(pointFirst)
                    Log.d("hxy", "padding=$padding,${
     mBound}")
                    textDots.add(PointF(0f, heightSize / 2
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值