Ich versuche, eine Ansicht auf eine Bitmap zu speichern, ohne darauf zu warten, dass sie gerendert wird. Ich bitte die Wiedergabe eines RecyclerView und dann tun:Wann ist eine Leinwand gefüllt?
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Config.ARGB_8888);
View view = activity.findViewById(R.id.my_view);
view.draw(new Canvas(bitmap));
Aber wenn ich die Bitmap speichern sofort wird es leer sein, weil die Ansichten in unter meiner Recycler Ansicht noch gezogen werden, denke ich. Ich müde mit der ViewTreeObserver
und eine OnGlobalLayoutListener
hinzufügen, aber das Problem bestand - dieser Rückruf wird zu früh aufgerufen.
Wie kann ich zuverlässig warten, bis die Bitmap/Leinwand gefüllt ist? Gibt es dafür einen spezifischen Rückruf?
PS: keine hart codierte Verzögerungen erlaubt :)
Dies ist ein Test und ich aktualisiere das RecyclerView ständig mit neuen Kindern, die in jeder Iteration eine Bitmap speichern. Würde dieser Ansatz nicht nur für die erste Iteration funktionieren, wenn die Recycler-Ansicht noch nicht erstellt wurde? –
ja, andere Herangehensweise ist zu verifi in onDraw wenn Größe = 0,0, wenn nicht das Ergebnis drucken –