3

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

所以我会使用这段代码:

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

浮动[] coP = 新浮动[]{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));

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

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

你有什么想法?

4

3 回答 3

3

医生说:

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

这样你就可以

1) 设置 NULL

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

于 2018-10-17T13:34:26.557 回答
1

线性渐变文档

您可以指定一个颜色数组,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));
于 2019-05-17T03:04:23.620 回答
0

AndroidPlot演示代码中有一个这样的例子

// 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);
于 2013-08-21T14:15:51.557 回答