Wie zeichne eine glatte / Dithering-Gradienten auf einer Leinwand in Android
Frage
Mehr Antworten erwähnen GradientDrawable.setDither (true) verwenden glatte Steigungen in Android zu ziehen. Das hat keine Auswirkung in meinem Code. Jede Idee, was ich zu ändern habe einen gut suchen Gradienten in meinem Live-Wallpaper zu bekommen?
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);
Lösung
Sehen, wie Sie eine Leinwand zur Arbeit mit haben. Hier ist eine 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;
}
Ergebnis:
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow