环状 刻度 Progress

20 篇文章 0 订阅

最近用到了一个环状 刻度的Progress, 效果如图:
这里写图片描述

原控件来自Github 感谢原作者

地址:

DiscView

来看一下属性.

<com.xinlan.discview.DiscView
        android:id="@+id/disc_view"
        android:layout_width="fill_parent"
        android:layout_height="220dp"
        app:dvAngleRotateSpan="360"
        app:dvBottomCircleIsShow="true"
        app:dvCircleMode="dot"
        app:dvIndicatorDraw="@drawable/indicator"
        app:dvInnerCirclePad="6dp"
        app:dvInnerCircleShow="true"
        app:dvOuterCirclePad="0dp"
        app:dvOuterCircleShow="false"
        app:dvStartRotateAngle="0"
        app:dvStrokenColor="#408BE1"
        app:dvStrokenWidth="16dp" />

以上属性如下图:
这里写图片描述

app:dvStartRotateAngle="90"  开始旋转角度值
app:dvAngleRotateSpan="180"  可旋转角度范围

这里写图片描述

app:dvBottomCircleIsShow="false" 环状刻度是否显示
app:dvOuterCircleShow="true"  外装饰圆是否显示

这里写图片描述

app:dvIndicatorDraw="@drawable/indicator" 指示器图片 即图上的白点
app:dvCircleMode="dot" 模式 有三种 dot/round/normal
app:dvInnerCirclePad="16dp"  内装饰圆与中间圆环距离
app:dvOuterCirclePad="16dp"  外装饰圆与中间圆环距离

这里写图片描述

app:dvStrokenColor="#ff0" 圆环刻度颜色

这里写图片描述

app:dvStrokenWidth="24dp"  圆环宽度

这里写图片描述

原控件没有内圆的填充色和描边, 可修改CircleView类

当然是 protected void onDraw(Canvas canvas) 方法中

//内圆绘制
        if (mInnerCircleIsShow) {//内圆显示
            int innerRadius = radius - (stokenWidth >> 1) - mInnerCirclePad - EXTRA_CIRCLE_WIDTH;
            //canvas.drawCircle(centerX, centerY, innerRadius, extraCirclePaint);
            tempRect.set(centerX - innerRadius, centerY - innerRadius,
                    centerX + innerRadius, centerY + innerRadius);
            //设置填充色
            extraCirclePaint.setColor(Color.parseColor("#141E3B"));
            extraCirclePaint.setStyle(Paint.Style.FILL);
            canvas.drawArc(tempRect, 0, angleRotateSpan, false, extraCirclePaint);
            //画描边
            extraCirclePaint.setStyle(Paint.Style.STROKE);
            extraCirclePaint.setStrokeWidth(5.0f);
            extraCirclePaint.setColor(Color.parseColor("#2A2D40"));
            canvas.drawArc(tempRect, 0, angleRotateSpan, false, extraCirclePaint);

        }

刻度数量在setCircleMode方法中修改

PathEffect effects = new DashPathEffect(new float[]{6, 25}, 10);

 case CIRCLE_MODE_DOT:
                //更改虚线
                PathEffect effects = new DashPathEffect(new float[]{6, 25}, 10);
                paint.setPathEffect(effects);
                bottomPaint.setPathEffect(effects);
                break;
            default:

HeadText / bottomText 在DiscView类中

headText = (TextView) v.findViewById(R.id.head_title);
bottomText = (TextView) v.findViewById(R.id.bottom_title);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值