Ich versuche, auf ein ImageViewTouch zu zeichnen, eine Bibliothek, die das Pinch-Zoomen ermöglicht. Ich kann mit Canvas über das Bild zeichnen, aber wenn ich das Bild zoome, verschwindet die Zeichnung.IllegalArgumentException: Breite und Höhe müssen beim Laden von Bitmap> 0 sein.
Dafür versuche ich, die Ansicht in eine Bitmap zu konvertieren und die ImageBitmap für diese Ansicht festzulegen. Hier ist der Code:
mImage.setDrawPath(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getWidth(), v.getHeight());
v.draw(c);
return b;
}
Wenn ich das tue, erhalte ich die folgenden Protokollfehler:
07-11 21:13:41.567: E/AndroidRuntime(20056): java.lang.IllegalArgumentException: width and height must be > 0
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:638)
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
Wenn ich den loadBitmapFromView
Aufruf entferne die Zeichnung normalerweise auf das Bild erscheint. Wenn ich versuche, mit dem Bild zu interagieren (z. B. durch Vergrößern oder Verkleinern), verschwindet die Zeichnung, wobei nur das Hintergrundbild, das ein Bild ist, erhalten bleibt.
--- EDIT ---
Hier einige weitere Code nach dem Aufruf loadBitmapFromView
platziert. Der Fall ist: Ich habe einen Radiogruppen-Listener und wenn ich einen Radioknopf überprüfe, muss ich das Bild laden und einige mögliche Zeichnungen darüber zeichnen. Dann versuche ich alles (das Bild und die Zeichnungen) in nur zu konvertieren eine Bitmap
Hier ist der ohter Teil des Codes:
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
Danach habe ich alles zeichne ich habe zu ziehen und versuchen, die Ansicht zu konvertieren die loadImageBitmap Methode Bitmap mit I gezeigt haben.
die decodeSampledBitmapFromResource
Methode, die ich von diesem Link auf Android-Entwickler bekam http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
Hallo, können Sie ein wenig mehr erklären. Also, wo auch immer Sie Ihre Bild-Bitmap setzen, Sie nur in eine "Runnable" wie oben und Ihre Breite und Höhe waren keine Probleme mehr? – Azurespot
Code funktioniert für alle Android-APIs anstelle von API 21 (Lollipop). Ich arbeite mit Samsung S4-Gerät, aber diese Codezeile hat mir auch nicht geholfen. –