这是我使用的代码:
Shader mShader0 = new LinearGradient(10 , 0, 66 ,0,
new int[] { Color.RED, Color.GREEN, Color.BLUE },
null, Shader.TileMode.REPEAT); // CLAMP MIRROR REPEAT
pincel1.setShader(mShader0);
canvasG.drawRect( 0, 0, 30, 200, pincel1);
canvasG.drawRect(1250, 0, 1280, 200, pincel1);
canvasG.drawRect(1000, 0, 1030, 200, pincel1);
canvasG.drawRect( 200, 0, 230, 200, pincel1);
canvasG.drawRect( 250, 0, 280, 200, pincel1);
pincel1.setShader(null);
结果是所有的列都不一样。
为什么不都一样?怎么了?
最佳答案
原因是因为LinearGradient
定义为从 x=10
开始, 结束于 x=66
然后重复。当您将渐变分配给绘画并绘制不同的矩形时,矩形的坐标用于确定要绘制渐变的“部分”。例如:来自 x=0
的矩形和 width=56
将包含您的完整渐变。之后的任何矩形都会重复该图案。
为了更好地理解,如果您在 x={a, a+56, a+2*56, a+3*56 ..}
处绘制矩形和 width<56
它们将包含相同的渐变图案。我希望这可以解释为什么上述观察是正确的。
关于android - 在 Java 中使用 Android 的垂直 LinearGradient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183422/