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