Jak uzyskać, gdy ImageView jest całkowicie załadowany w Androidzie
Opracowuję aplikację, która rysuje linie na kilku obrazach. Aby wybrać te obrazy, mam grupę radiową i za każdym razem, gdy użytkownik kliknie przycisk radiowy, obraz jest ładowany ze wszystkimi własnymi rysunkami.
W moim słuchaczu radiowym mam następujący kod:
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
mImage.setDrawLines(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
decodeSampledBitmapFromResource
metoda, którą otrzymałem z tego linku na programistów Androida (ładuje bitmapy bardziej efektywnie)http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
A oto metoda, którą nazywam, aby uzyskać bitmapę widoku
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;
}
Ustawiam obraz Bitmap zmImage
ponieważ korzystam z biblioteki ImageViewTouch (która umożliwia powiększanie obrazu nad ImageView), a jeśli tego nie zrobię, cały rysunek płótna jest usuwany z dowolną interakcją nad obrazem (np. powiększanie / pomniejszanie).
Dziennik błędów jest następujący
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)
Jestem prawie pewien, że ten błąd występuje, ponieważ mapa bitowa obrazu nie jest całkowicie załadowana, gdy dzwonięgetBitmapFromView
metoda.
Skąd mam wiedzieć, kiedy widok jest całkowicie załadowany?