Я разрабатываю приложение, которое рисует линии над связкой изображений. Чтобы выбрать эти изображения, у меня есть группа радиостанций, и всякий раз, когда пользователь нажимает на переключатель, изображение загружается со всеми его чертежами.
В моем радиослушателе есть следующий код:
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
mImage.setDrawLines(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
метод decodeSampledBitmapFromResource
, полученный по этой ссылке в разработчиках Android (он загружает растровые изображения более эффектно) http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
И вот метод, который я вызываю, чтобы получить растровое изображение вида
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;
}
Я устанавливаю изображение Bitmap из mImage
, потому что я использую библиотеку ImageViewTouch (которая позволяет масштабировать масштабирование по ImageView), и если я этого не делаю, весь рисунок холста удаляется с любым взаимодействием по изображение (например, увеличение/уменьшение масштаба).
Журнал ошибок следующий
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)
Я почти уверен, что эта ошибка возникает, потому что растровое изображение изображения не полностью загружено, когда я вызываю метод getBitmapFromView
.
Как я могу узнать, когда изображение полностью загружено?