效果图:
原理:
1.继承自ImageView,将ImageView分为8个区域,8个节点。
2.按照100的总进度,除以8,每个区域分配12.5个进度(区域1为0-12.5,区域2为12.5-25,区域3为25-37.5,以此类推),取每个区域的px除以12.5获得每1个进度需要在x轴方向或y方向移动的px值(取名为perX和perY)。
3.给每个节点设置权限值(按100/8分配,节点1为12.5,节点2为25,节点3为37.5,以此类推,到节点8为100)。
4.通过设置的进度,计算出进度落点坐标,比如进度55,区域落在区域6(50-62.5),可以得知坐标为(0, getHeight()/2 + perY*55)。
5.遍历所有节点,将权限大于进度的节点加入Path,同时以中心的(getWidth()/2, getHeight()/2)为起点,4中计算获得的坐标为第二个点加入Path。
6.使用canvas绘制Path,并且在每次重新绘制时重置Path。
Github地址
直接copy代码就可以用了,功能较小,没有做成依赖。
可以的话点个star支持一下,thanks。