android - 在 Java 中使用 Android 的垂直 LinearGradient

标签 android

这是我使用的代码:

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); 

结果是所有的列都不一样。

为什么不都一样?怎么了?

enter image description here

最佳答案

原因是因为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/

相关文章:

安卓 Kotlin : Error when using 'suspend' in DAO - Following CodeLabs guide

java - InputStream 在监听 BluetoothSocket 时没有得到任何东西

java - AndroidManifest.xml 文件中的 "allowClearUserData"= "false"

android - 在 .so 中混合使用 c/c++ 和程序集时避免文本重定位

android - 如何在 Android 中模拟 PreferenceManager?

Android - 即使应用程序被终止或设备重新启动,也会在后台运行服务

java - Android Volley 同步请求不起作用

android - 如何从 surfaceView 完成一个 Activity 并调用带有附加功能的新 Activity

java - textView.SetText 仅在文本较长时有效

android - GCM - 为什么我在 onMessageReceived 中得到 NULL?