Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 文本的多色渐变_Android - Fatal编程技术网

Android 文本的多色渐变

Android 文本的多色渐变,android,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);

我想为文本执行多色渐变。我使用着色器作为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);  
但这会使三种颜色中的一种变暗,也就是说,它会混合。不是我想要的输出。我希望三种颜色都是原样,在我上面的代码中有相对位置的参数,它的空值(颜色是均匀分布的)有没有任何方法可以通过相对位置或其他方式获得所需的输出


请建议?

尚未测试此方法,但我在文档中看到了此重载方法:

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坐标

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

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

平铺-着色器平铺模式

*所以基本上,用你想要的三种颜色做一个int数组,并将其传递到LinearGradient中,然后用float数组做同样的事情


试试这个。。。试试这个:我只使用了其中一个解决方案。。。但其他渗硼层溶液不提供多色,我只使用了其中一种溶液。。。但其他渗硼层溶液不能提供多色。在这里,至少着色器允许我有一个颜色数组,我可以调整它