Ich entwickle eine App, die Linien über eine Reihe von Bildern zeichnet. Um diese Bilder auszuwählen, habe ich eine Radiogruppe, und wenn der Benutzer in einen Radioknopf klickt, wird das Bild mit allen seinen eigenen Zeichnungen geladen.Wie bekomme ich, wenn ein ImageView vollständig in Android geladen wird
In meinem Radio listenner Ich habe den folgenden Code:
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
mImage.setDrawLines(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
die decodeSampledBitmapFromResource
Methode, die ich von diesem Link auf Android-Entwickler bekommen (es lädt Bitmaps mehr effitiently) http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
Und hier ist die Methode, die ich nennen eine Bitmap einer Ansicht
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}
ich gründe das Bild Bitmap von mImage
zu bekommen, weil ich bin mit Im ageViewTouch-Bibliothek (ermöglicht Pinch-Zooming über ein ImageView) und wenn ich es nicht mache, wird die gesamte Canvas-Zeichnung gelöscht mit jeder Interaktion über das Bild (wie Zoomen in/out).
Das Fehlerprotokoll ist das folgende
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)
ich fast sicher bin, dass dieser Fehler auftreten Ursache das Bitmap-Bild wird nicht vollständig geladen, wenn ich getBitmapFromView
Methode aufrufen.
Wie kann ich wissen, wann die Ansicht vollständig geladen ist?
uhm ich nicht bekommen, es würde sie mich wieder in Ihrem Code erklären? Sie haben ImageBitmap das erste Mal gesetzt. Warum möchtest du es zum zweiten Mal einstellen und laden mit und Höhe aus Sicht? –
das erste Mal ist das Bild sauber zu laden (ohne Zeichnungen). dann zeichne ich die Linien über die Bilder, indem ich setDrawLines aufruft. Sobald die Zeichnungen auf Canvas gezeichnet sind, muss ich ein einzigartiges Bild des Bildes und der Zeichnungen erstellen. Also rufe ich zum zweiten Mal die imageBitmap auf, diesmal aber Ich muss die Bitmap aus der Ansicht holen (weil die Ansicht die Zeichnungen hat). Auf diese Weise stelle ich sie zusammen –
Es scheint, dass dies http://stackoverflow.com/questions/8831642/how-to-draw -lines-over-imageview-on-android wäre mehr von dem, was Sie wollen. –