Cómo dibujar un gradiente de suavizar / difuminada en un lienzo en Android
Pregunta
Varias respuestas mencionar a utilizar GradientDrawable.setDither (verdadero) para dibujar gradaciones suaves en Android. Eso no tiene ningún efecto en mi código. Cualquier idea de lo que tiene que cambiar para conseguir así un gradiente mirando en mi fondo de pantalla en vivo?
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);
Solución
En vista de que usted tiene un lienzo para trabajar. Aquí es una opción.
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;
}
Resultados:
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow