web-dev-qa-db-fra.com

Comment dessiner un dégradé lisse / tramé sur une toile dans Android

Plusieurs réponses mentionnent l'utilisation de GradientDrawable.setDither (true) pour dessiner des dégradés fluides dans Android. Cela n'a aucun effet dans mon code. Une idée de ce que je dois changer pour obtenir un dégradé bien dans mon fond d'écran en direct?

GradientDrawable gradient = new GradientDrawable(Orientation.TL_BR, colors);
gradient.setGradientType(GradientDrawable.RADIAL_GRADIENT);
gradient.setGradientRadius(canvas.getWidth() * 2);
gradient.setDither(true);
gradient.setGradientCenter(-0.1f, -0.1f);
gradient.setBounds(cb);
gradient.draw(canvas);
35
André

Voyant que vous avez une toile avec laquelle travailler. Voici une option.

private Bitmap makeRadGrad() {
    RadialGradient gradient = new RadialGradient(200, 200, 200, 0xFFFFFFFF,
            0xFF000000, Android.graphics.Shader.TileMode.CLAMP);
    Paint p = new Paint();
    p.setDither(true);
    p.setShader(gradient);

    Bitmap bitmap = Bitmap.createBitmap(400, 400, Config.ARGB_8888);
    Canvas c = new Canvas(bitmap);
    c.drawCircle(200, 200, 200, p);

    return bitmap;
}

Résultat:

Result

78
Eric Schlenz