Come disegnare un lisciare / gradiente di dithering su una tela in Android
Domanda
Diverse risposte parlare di utilizzare GradientDrawable.setDither (vero) per disegnare pendenze regolari in Android. Che non ha alcun effetto nel mio codice. Qualche idea di cosa devo cambiare per ottenere un gradiente ben guardare nella mia carta da parati dal 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);
Soluzione
Visto che hai una tela su cui lavorare. Qui è un'opzione.
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;
}
Risultato:
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow