文本的多色渐变

时间:2012-02-06 12:42:48

标签: android

我想为文本执行多色渐变。我使用着色器作为Stackflow成员之一提供了技巧。以下是我提供多色输入的代码

Shader textShader=new LinearGradient(100, 375, 100, 450,                
         new int[]{res.getColor(R.color.Red),res.getColor(R.color.Green),Color.MAGENTA},
         null, TileMode.CLAMP);  

但这会使三种颜色中的一种变色,即它会混合。不是我想要的输出。我希望看到三种颜色,在上面的代码中有相对位置的参数,它的空(颜色是均匀分布的)有什么方法可以通过它获得相对位置或其他的所需输出

请建议?

1 个答案:

答案 0 :(得分:0)

没有测试过这个,但我在文档中看到了这个重载方法:

public LinearGradient (float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile)

参数

x0 - 渐变线起点的x坐标

y0 - 渐变线起点的y坐标

x1 - 渐变线末端的x坐标

y1 - 渐变线末端的y坐标

colors - 沿着渐变线分布的颜色

职位 - 可能为空。颜色数组中每个对应颜色的相对位置[0..1]。如果为null,则颜色沿着渐变线均匀分布。

tile - 着色器平铺模式

*所以基本上用你想要的所有三种颜色制作一个int数组,然后将它传递给你的LinearGradient,并对float数组做同样的操作。

http://developer.android.com/reference/android/graphics/LinearGradient.html