Android - LinearGradient Java中的多种颜色

时间:2013-08-21 12:17:54

标签: java android androidplot

我正在尝试在AndroidPlot的背景上绘制渐变,我只需要一个油漆对象。

所以我会使用这段代码:

  

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

     

float [] coP = new float [] {0.1f,0.1f,0.6f,0.1f,0.1f};

      >Paint pa = new Paint();

      >pa.setAlpha(200);

      >pa.setShader(new LinearGradient(0,0,250,graphv.getHeight(),co,coP,Shader.TileMode.REPEAT));

但背景只有一种颜色:RED。

我不知道为什么,或者如何解决它..

你有什么想法吗?

3 个答案:

答案 0 :(得分:0)

AndroidPlot中有一个例子demo code

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

答案 1 :(得分:0)

医生说:

@param位置可能为NULL。如果为NULL, 颜色在起点和终点之间均匀分布。 如果不为null,则值必须以0开头,以1.0结尾,并且 中间值必须严格增加。

所以您可以

1)设置为空

2)float [] position = new float [] {0.1f,0.3f,0.5f,0.7f,0.9f};
结果:
| -------- | ----------------------------- | -------------- --------------- | ----------------------------- | ---- --------------------- | -------- |
红0.1红黄0.3黄绿0.5绿黄0.7黄红0.9红

OR

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

答案 2 :(得分:0)

LinearGradient Documentation

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

示例:

float[] positions = null;
int[] colors = {
    Color.BLACK,
    Color.RED,
    Color.GREEN
};
paint.setShader(new LinearGradient(0f, 0f, (float)bounds.width(), 0f, colors, positions, Shader.TileMode.MIRROR));