Comment dessiner une surface lisse / gradient tramées sur une toile dans Android
Question
Plusieurs réponses mentionnent utiliser GradientDrawable.setDither (true) pour dessiner des dégradés lisses dans Android. Cela n'a pas d'effet dans mon code. Toute idée de ce que je dois changer pour obtenir un dégradé bien regarder 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);
La solution
Voyant que vous avez une toile à travailler avec. 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:
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow