Как заполнить путь на Android с линейным градиентом?

StackOverflow https://stackoverflow.com/questions/2836098

  •  26-09-2019
  •  | 
  •  

Вопрос

Учитывая результат объекта закрытого пути, как это:

enter image description here

Хотя это прямоугольник, я ищу что-то, что работает с каким-либо закрытым путем.

Это было полезно?

Решение

В то время как ответ Steelbytes, вероятно, даст вам больше контроля над отдельными разделами градиента, вы можете сделать это без пути:

protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);
    Paint p = new Paint();
    // start at 0,0 and go to 0,max to use a vertical
    // gradient the full height of the screen.
    p.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR));
    canvas.drawPaint(p);
}

Другие советы

Это может помочь

protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);
    int w = getWidth();
    int h = getHeight();
    Paint p = new Paint(Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);
    Path pth = new Path();
    pth.moveTo(w*0.27f,0);
    pth.lineTo(w*0.73f,0);
    pth.lineTo(w*0.92f,h);
    pth.lineTo(w*0.08f,h);
    pth.lineTo(w*0.27f,0);
    p.setColor(0xff800000);
    p.setShader(new LinearGradient(0,0,0,h,0xff000000,0xffffffff,Shader.TileMode.CLAMP));
    canvas.drawPath(pth,p);
}   
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top