Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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-LinearGradient Java中的多种颜色_Java_Android_Androidplot - Fatal编程技术网

Android-LinearGradient Java中的多种颜色

Android-LinearGradient Java中的多种颜色,java,android,androidplot,Java,Android,Androidplot,我正试图在AndroidPlot的背景上绘制一个渐变,我所需要的只是一个绘画对象 因此,我将使用以下代码: int[]co=newint[]{Color.RED,Color.YELLOW,Color.GREEN,Color.YELLOW,Color.RED} float[]coP=新的float[]{0.1f、0.1f、0.6f、0.1f、0.1f} 但是背景只有一种颜色:红色 我不知道为什么,也不知道如何修复它 你有什么想法吗?在AndroidPlot中有一个这样的例子 医生说: @参数位置可

我正试图在AndroidPlot的背景上绘制一个渐变,我所需要的只是一个绘画对象

因此,我将使用以下代码:

int[]co=newint[]{Color.RED,Color.YELLOW,Color.GREEN,Color.YELLOW,Color.RED}

float[]coP=新的float[]{0.1f、0.1f、0.6f、0.1f、0.1f}

但是背景只有一种颜色:红色

我不知道为什么,也不知道如何修复它


你有什么想法吗?

在AndroidPlot中有一个这样的例子

医生说:

@参数位置可能为空。如果为空, 颜色在起点和终点之间均匀分布。 如果不为null,则值必须以0开头,以1.0结尾,然后 中间值必须严格递增

所以你可以

1) 设为空

2) 浮动[]位置=新浮动[]{0.1f、0.3f、0.5f、0.7f、0.9f}
结果:
|--------|-------------------------|-----------------------------|-----------------------------|-------------------------|--------|
红色0.1红色-黄色0.3黄色-绿色0.5绿色-黄色0.7黄色-红色0.9红色

浮动[]位置=新浮动[]{0f,0.3f,0.5f,0.7f,1f}
结果:
|------------------------|-----------------------------|-----------------------------|-------------------------|
0红-黄0.3黄-绿0.5绿-黄0.7黄-红1

可以指定颜色数组,LinearGradient类将自动绘制沿渐变线均匀分布的颜色

例如:

float[]位置=null;
int[]颜色={
颜色,黑色,
颜色,红色,
颜色:绿色
};
paint.setShader(新的LinearGradient(0f,0f,(float)bounds.width(),0f,colors,positions,Shader.TileMode.MIRROR));

是的,我知道。但是我想用5种颜色绘制一个渐变,正如你在我的示例代码中看到的那样。我使用另一个构造器,但它不起作用。另一个选择是在Photoshop中创建渐变并将其水平拉伸。但我不知道如何将位图设置为绘图或绘制对象的背景。
      >Paint pa = new Paint();

      >pa.setAlpha(200);

      >pa.setShader(new LinearGradient(0,0,250,graphv.getHeight(),co,coP,Shader.TileMode.REPEAT));
// setup our line fill paint to be a slightly transparent gradient:
Paint lineFill = new Paint();
lineFill.setAlpha(200);
lineFill.setShader(new LinearGradient(0, 0, 0, 250, Color.WHITE, Color.BLUE, Shader.TileMode.MIRROR));
stepFormatter.setFillPaint(lineFill);