Nachdem ich mir die anderen Antworten angeschaut (und benutzt) habe, scheint es so, als ob sie alle mit ColorDrawable
y PaintDrawable
schlecht. (Vor allem auf Lollipop) schien, dass Shader
s wurden optimiert, so dass einfarbige Blöcke nicht korrekt behandelt wurden.
Ich verwende jetzt den folgenden Code:
public static Bitmap drawableToBitmap(Drawable drawable) {
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
}
// We ask for the bounds if they have been set as they would be most
// correct, then we check we are > 0
final int width = !drawable.getBounds().isEmpty() ?
drawable.getBounds().width() : drawable.getIntrinsicWidth();
final int height = !drawable.getBounds().isEmpty() ?
drawable.getBounds().height() : drawable.getIntrinsicHeight();
// Now we check we are > 0
final Bitmap bitmap = Bitmap.createBitmap(width <= 0 ? 1 : width, height <= 0 ? 1 : height,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
Anders als bei den anderen, wenn Sie setBounds
über die Drawable
bevor es in ein Bitmap umgewandelt wird, wird es das Bitmap in der richtigen Größe zeichnen!
1 Stimmen
codingaffairs.blogspot.com/2016/06/
2 Stimmen
Bitte wählen Sie die richtige Antwort, nämlich diese: stackoverflow.com/a/3035869/4548520
1 Stimmen
stackoverflow.com/a/15555203/1731082