自定义横向带刻度progressbar

项目需要,需要自定义带渐变色的进度条,效果如下:

在这里插入图片描述

1,思路

  • 首先绘制 roundRect 带半圆的矩形背景
  • 绘制一个 可变的rect矩形 ,让rect的宽度不断的变大来实现对下面roundRect覆盖
  • 通过PorterDuffXfermode的PorterDuff.Mode.SRC_IN来取可变rect跟背景rect相交的部分
  • 记得取消硬件加速

2,用到的主要知识点

  • LinearGradient 渐变色
  • PorterDuffXfermode 去交集部分渲染

3,开始绘制

  • 1,初始化,onsizechange ,onMeasure省略…
  • 2,画背景跟边
  canvas.drawRoundRect(mBgRect, mViewHeight / 2, mViewHeight / 2, mBgPaint);
  canvas.drawRoundRect(mBgRect, mViewHeight / 2, mViewHeight / 2, mStrokePaint);

  • 3,初始化可变的rect矩形跟渐变色的shader
	//可变矩形mProgressWidth
  RectF progressRect = new RectF(mStrokeWidth / 2, mStrokeWidth / 2, mProgressWidth - mStrokeWidth / 2, mViewHeight 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值