Растровое изображение не отображается в ImageView

При попытке отобразить JPG из URL-адреса у меня возникла проблема с отображением изображения в моем ImageView. Я могу открыть URLConnection, вытащить изображение в InputStream, декодировать этот поток в Bitmap. Я даже могу получить значения высоты и ширины растрового изображения. Я установил растровое изображение в ImageView и все еще могу получить высоту для Drawable. Однако изображение по-прежнему не отображается в моем приложении. Любые идеи о том, что я мог пропустить? Спасибо за любую помощь.

try{
    URL imgURL = new URL(imgLocation);
    URLConnection conn = imgURL.openConnection();
    conn.connect();
    InputStream is = conn.getInputStream();

    BufferedInputStream bis = new BufferedInputStream(is, 25);

    Bitmap bm = BitmapFactory.decodeStream(bis);

    if(bm != null){
        System.err.println("Image Height: " + bm.getHeight());
        System.err.println("Image Width: " + bm.getWidth());
    } else {
        System.err.println("bm is null!!!");
    }

    img.setImageBitmap(bm);
    System.err.println("Drawable Height: " + img.getDrawable().getIntrinsicHeight());

    } catch (IOException e) {
        // Print out the exception that occurred
        e.printStackTrace();
    }

person stmcallister    schedule 08.01.2011    source источник


Ответы (1)


У меня нет прямого ответа на ваш вопрос, но я могу предложить альтернативное решение для этой потребности.

Использование ImageView вызовет у вас много проблем с удобством использования. Вам нужно избегать блокировки экрана, а повторная загрузка изображения — это плохо с точки зрения оптимизации.

Я бы предложил гораздо более простое и эффективное решение; вы можете использовать WebImageView от Droid-Fu. Работает как часы. вы просто передаете URL-адрес изображения, и вы позволяете WebImageView обрабатывать загрузку, показывая прогресс и даже кеширование.

вот playgorund Droid-Fu на GitHub (ищите «droid-fu»)

p.s. Я также сделал несколько расширений для этого механизма кэширования, уже выпущенного на моей игровой площадке github (ищите «wareninja»)

person beerstorm    schedule 08.01.2011