视频中老师书写的代码可能存在功能实现上的错误或者粗心的漏洞
本来想写在评论区的,发现有字数限制。
老师的视频中书写的代码(源码)中:
ColorMatrix hueMatrix = new ColorMatrix();
hueMatrix.setRotate(0, hue);
hueMatrix.setRotate(1, hue);
hueMatrix.setRotate(2, hue);
实际hueMatrix.setRotate(0, hue);和hueMatrix.setRotate(1, hue);是起不到作用的,真正起作用的是hueMatrix.setRotate(2, hue);,也就是帮助文档里说的围绕BLUE调色圈的调节(把SeekBar拉到头和尾呈现的是纯蓝色)。
正确的写法是和调节其他两项的写法是一样的,要创建新的ColorMatrix对象然后进行postConcat操作。
ColorMatrix hueMatrix0 = new ColorMatrix();
hueMatrix0.setRotate(0, hue);
ColorMatrix hueMatrix1 = new ColorMatrix();
hueMatrix1.setRotate(1, hue);
ColorMatrix hueMatrix2 = new ColorMatrix();
hueMatrix2.setRotate(2, hue);
如果分别为其创建各自的SeekBar,就可以看到hueMatrix0的SeekBar拉到头尾是R调色圈,hueMatrix1的SeekBar拉到头尾是G调色圈,而hueMatrix2的SeekBar就和视频里的一样是B调色圈。
额...这算是挺久的视频了,不知道还有没有人和我一样来回顾,没有去翻看ColorMatrix类的源码,不知道我说的是否完全正确,只是现象是这样的,所以希望后面看到的人可以自己试一下我上面所说的。