最近在做圆形渐变进度条时遇到了很烦人的问题,两色渐变时问题不大,多色时先是颜色出现了异常,搞好了展示的颜色数组有不对。搞了好长时间,毕竟自己对自定义这一块很不熟练所以写下笔记记录下问题。
1,颜色展示错乱
关于颜色的渐变使用到了SweepGradient这个类这个是做圆形颜色渐变的,一开始在忙也不对,后来在网上查了很多发现这个东西加载颜色是从0开始的但它的0并不是在顶部而是在3点钟方向所以一直有问题,使用matrix解决了这个问题,matrix可以设置路径使用它把颜色渲染开始的地方放到底部-90的位置
Matrix matrix = new Matrix()
matrix.setRotate(-90, center / 2, center / 2);
sweepGradient.setLocalMatrix(matrix);
位置是解决了但是传入了4个值的颜色数组,就展示了三个,可把我看傻了上网查也没找到原因,后来在群里一个网友的帮助下才解决原来是,绘制的圆必须和SweepGradient圆心重合这样才能正常展示。在创建SweepGradient时传的参数要是
SweepGradient sweepGradient = new SweepGradient(center,center,colorArray,position);
Matrix matrix = new Matrix();
matrix.setRotate(-90, center / 2, center / 2);
sweepGradient.setLocalMatrix(matrix);
circlePaint.setShader(sweepGradient);
圆心的参数这样才解决。