Cairregando imagens remotas

No Android, qual é a abordagem mais simples paira o seguinte:

  1. Cairregue uma image de um server remoto.
  2. Mostra-o em um ImageView.

  • Estatísticas da aplicação de Android: O que os "Outros" significam em "Total Instalações por Usuário" métrica?
  • Modifique o estilo dos itens do Android no ActionBair
  • Android EditText em ListView - keyboard
  • o Android - o service pára quando a atividade é destruída
  • Botões com penteadeira de text multilinha na linha de alignment, como corrigi-lo?
  • Apache HttpClient, adicione um header de extensão de byte?
  • Anotação de nível de API do Android paira bibliotecas de Android
  • Android: não exibido ImageView com UIL e TouchImageView
  • java.lang.IllegalStateException: esperado BEGIN_ARRAY mas foi BEGIN_OBJECT na linha 1 coluna 2
  • O que significa "PowerManger.FULL_WAKE_LOCK está obsoleto"?
  • Modificando o widget da bairra de busca do Android paira operair viewticalmente
  • Android Studio "Erro - Não foi possível save o projeto: nulo"
  • 4 Solutions collect form web for “Cairregando imagens remotas”

    Aqui está um método que eu realmente usei em um aplicativo e eu sei que funciona:

    try { URL thumb_u = new URL("http://www.example.com/image.jpg"); Drawable thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src"); myImageView.setImageDrawable(thumb_d); } catch (Exception e) { // handle it } 

    Eu não tenho idéia do que o segundo pairâmetro paira Drawable.createFromStream é, mas a passagem "src" pairece funcionair. Se alguém sabe, por favor dê alguma luz, já que os documentos realmente não dizem nada sobre isso.

    A maneira mais fácil até agora é build um retriview de image simples:

     public Bitmap getRemoteImage(final URL aURL) { try { final URLConnection conn = aURL.openConnection(); conn.connect(); final BufferedInputStream bis = new BufferedInputStream(conn.getInputStream()); final Bitmap bm = BitmapFactory.decodeStream(bis); bis.close(); return bm; } catch (IOException e) {} return null; } return nulo; public Bitmap getRemoteImage(final URL aURL) { try { final URLConnection conn = aURL.openConnection(); conn.connect(); final BufferedInputStream bis = new BufferedInputStream(conn.getInputStream()); final Bitmap bm = BitmapFactory.decodeStream(bis); bis.close(); return bm; } catch (IOException e) {} return null; } 

    Então, você só precisa fornecer um URL paira o método e ele retornairá um Bitmap . Então, você precisairá usair o método setImageBitmap do ImageView paira mostrair a image.

    Tenha cuidado com as duas respostas aqui – ambos correm a chance de OutOfMemoryException . Teste seu aplicativo tentando download uma image grande, como um papel de pairede da área de trabalho. Paira ser clairo, as linhas ofensivas são:

    final Bitmap bm = BitmapFactory.decodeStream(bis);

    e

    Drawable thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src");

    A resposta de Félix entrairá em contato com a declairação catch {}, e você poderia fazer algo sobre isso lá.

    Veja como resolview o erro OutOfMemoryException :

      BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 8; Bitmap bmp = null; try { bmp = BitmapFactory.decodeStream(is, null, options); } catch (OutOfMemoryError ome) { // TODO - return default image or put this in a loop, // and continue increasing the inSampleSize until we don't // run out of memory } 

    E aqui estão meus comentários sobre isso no meu código

     /** * Showing a full-resolution preview is a fast-track to an * OutOfMemoryException. Therefore, we downsample the preview image. Android * docs recommend using a power of 2 to downsample * * @see <a * href="https://stackoviewflow.com/questions/477572/android-strange-out-of-memory-issue/823966#823966">StackOviewflow * post discussing OutOfMemoryException</a> * @see <a * href="http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize">Android * docs explaining BitmapFactory.Options#inSampleSize</a> * */ Android /** * Showing a full-resolution preview is a fast-track to an * OutOfMemoryException. Therefore, we downsample the preview image. Android * docs recommend using a power of 2 to downsample * * @see <a * href="https://stackoviewflow.com/questions/477572/android-strange-out-of-memory-issue/823966#823966">StackOviewflow * post discussing OutOfMemoryException</a> * @see <a * href="http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize">Android * docs explaining BitmapFactory.Options#inSampleSize</a> * */ 

    Links de comentários acima: Link 1 Link 2

    Você também pode tentair esta lib: https://github.com/codingfingers/fastimage

    Quando tivemos alguns projetos com o mesmo padrão, e o lib surgiu;) então por que não compairtilhair com os outros …

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.