3. fresco é um sistema poderoso para a exibição de imagens em aplicativos Android . O Fresco cuida do carregamento e exibição da imagem, para que você não precise.
Portanto, se o URL for localhost, significa que a imagem está no banco de dados do servidor local do sistema em desenvolvimento, como xampp, ainda assim é possível obter a imagem do URL =.
blackjack
2
@blackjack - o host local do aplicativo seria o próprio smartphone. Para acessar seu sistema em desenvolvimento, o smartphone e seu sistema em desenvolvimento deverão estar na mesma rede e você precisará usar o endereço IP do seu sistema em desenvolvimento nessa rede.
Ridcully
1
é possível usar o picasso para carregar a imagem no botão?
mahdi
1
@chiragkyada eu tento com esse código Picasso.with (context) .load (url) .into (button_view); mas é mostrar erro para: into (button_view)
você está certo. mas apenas essas três linhas ajudam a resolver o problema. URL newurl = nova URL (photo_url_str); mIcon_val = BitmapFactory.decodeStream (newurl.openConnection () .getInputStream ()); profile_photo.setImageBitmap (mIcon_val); obrigado pela sua resposta.
Praveen
2
Para URL - import java.net.URL; final estático privado int IO_BUFFER_SIZE = 4 * 1024; qual foi o ultimo
UrlImageViewHelper preencherá um ImageView com uma imagem encontrada em um URL.
A amostra fará uma Pesquisa de imagens do Google e carregará / exibirá os resultados de forma assíncrona.
O UrlImageViewHelper fará o download, salvará e armazenará em cache automaticamente todos os URLs da imagem do BitmapDrawables. Os URLs duplicados não serão carregados na memória duas vezes. A memória de bitmap é gerenciada usando uma tabela de hash de referência fraca; assim que a imagem não for mais usada por você, ela será coletada automaticamente.
mm .. isso não pode ser feito a partir da thread da interface do usuário.
Guy
2
Para pessoas com problemas com "Exceção de URL malformada", coloque as linhas acima em uma tentativa / captura. stackoverflow.com/a/24418607/2093088
Riot Goes Woof
1
Isto deve ser feito usando AsyncTask como descrito acima
B-GaNgStEr
63
A resposta aceita acima é ótima se você estiver carregando a imagem com base em um clique no botão; no entanto, se estiver fazendo isso em uma nova atividade, ela congelará a interface do usuário por um segundo ou dois. Olhando em volta, descobri que uma simples assíncrona eliminava esse problema.
Para usar um asynctask, adicione esta classe no final de sua atividade:
O resultado é uma atividade carregada rapidamente e uma visualização de imagem que aparece uma fração de segundo depois, dependendo da velocidade da rede do usuário.
Bela amostra, mas não acredito que isso seja seguro para threads. Estou tentando usá-lo em um Async onPostExecute, no entanto, o onPostExecute às vezes pode terminar antes que o retorno de chamada seja recebido, renderizando uma imagem nula.
Jimmy
Isso gerencia seu próprio segmento. Então, por que não chamar sua ASyncTask de volta para a interface do usuário quando ela terminar, com o URL que você deseja. Dessa forma, você não tem tópicos que geram tópicos.
A melhor biblioteca moderna para essa tarefa, na minha opinião, é Picasso by Square. Permite carregar uma imagem em um ImageView por URL com uma linha:
Eu encontrei recentemente um tópico aqui , pois tenho que fazer algo semelhante para uma lista de exibição com imagens, mas o princípio é simples, como você pode ler na primeira classe de exemplo mostrada lá (por jleedev). Você obtém o fluxo de entrada da imagem (da web)
Em seguida, você armazena a imagem como Drawable e pode transmiti-la ao ImageView (via setImageDrawable). Novamente, no snippet de código superior, dê uma olhada em todo o thread.
Muitas informações boas aqui ... Encontrei recentemente uma classe chamada SmartImageView que parece estar funcionando muito bem até agora. Muito fácil de incorporar e usar.
Esta é uma resposta tardia, conforme sugerido acima AsyncTaske, depois de pesquisar um pouco, encontrei mais uma maneira para esse problema.
Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Aqui está a função completa:
publicvoid loadMapPreview (){//start a background thread for networkingnewThread(newRunnable(){publicvoid run(){try{//download the drawablefinalDrawable drawable =Drawable.createFromStream((InputStream)new URL("url").getContent(),"src");//edit the view in the UI thread
imageView.post(newRunnable(){publicvoid run(){
imageView.setImageDrawable(drawable);}});}catch(IOException e){
e.printStackTrace();}}}).start();}
Não se esqueça de adicionar as seguintes permissões no seu AndroidManifest.xmlpara acessar a Internet.
Isso é realmente muito bom para o minimalismo! Lembre-se de que é necessário executar um extra Threadporque o encadeamento da interface do usuário não permite operações de rede.
Creativecreatorormaybenot
6
imageView.setImageBitmap(BitmapFactory.decodeStream(imageUrl.openStream()));//try/catch IOException and MalformedURLException outside
Tente dessa maneira, espero que isso ajude você a resolver seu problema.
Aqui, explico como usar a biblioteca externa "AndroidQuery" para carregar a imagem do URL / servidor da maneira asyncTask, com também a imagem carregada em cache no arquivo do dispositivo ou na área de cache.
Faça o download da biblioteca "AndroidQuery" a partir daqui
Copie / cole este jar na pasta lib do projeto e adicione esta biblioteca ao caminho de construção do projeto
publicclassMainActivityextendsActivity{privateAQuery aQuery;@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
aQuery =newAQuery(this);
aQuery.id(R.id.imageFromUrl).progress(R.id.pbrLoadImage).image("http://itechthereforeiam.com/wp-content/uploads/2013/11/android-gone-packing.jpg",true,true);}}Note:Here I just implemented common method to load image from url/server but you can use various types of method which can be provided by"AndroidQuery"to load your image easily.
Respostas:
Do desenvolvedor do Android :
Verifique se você possui as seguintes permissões definidas
AndroidManifest.xml
para acessar a Internet.fonte
1. O Picasso permite o carregamento de imagens sem problemas no seu aplicativo - geralmente em uma linha de código!
Use Gradle:
Apenas uma linha de código!
2. Planar Uma biblioteca de carregamento e armazenamento de imagens para Android focada em rolagem suave
Use Gradle:
// Para uma visão simples:
3. fresco é um sistema poderoso para a exibição de imagens em aplicativos Android . O Fresco cuida do carregamento e exibição da imagem, para que você não precise.
Introdução ao Fresco
fonte
Você terá que baixar a imagem primeiro
Em seguida, use o Imageview.setImageBitmap para definir o bitmap no ImageView
fonte
Eu escrevi uma classe para lidar com isso, pois parece ser uma necessidade recorrente em meus vários projetos:
https://github.com/koush/UrlImageViewHelper
fonte
Enfim, as pessoas pedem meu comentário para publicá-lo como resposta. estou postando.
fonte
A resposta aceita acima é ótima se você estiver carregando a imagem com base em um clique no botão; no entanto, se estiver fazendo isso em uma nova atividade, ela congelará a interface do usuário por um segundo ou dois. Olhando em volta, descobri que uma simples assíncrona eliminava esse problema.
Para usar um asynctask, adicione esta classe no final de sua atividade:
E chame a partir do seu método onCreate () usando:
O resultado é uma atividade carregada rapidamente e uma visualização de imagem que aparece uma fração de segundo depois, dependendo da velocidade da rede do usuário.
fonte
Você também pode usar esta exibição LoadingImageView para carregar uma imagem de um URL:
http://blog.blundellapps.com/imageview-with-loading-spinner/
Depois de adicionar o arquivo de classe a partir desse link, você pode instanciar uma visualização de imagem de URL:
em xml:
Em código:
E atualize-o usando:
fonte
fonte
Oi, eu tenho o código mais fácil, tente isso
main.xml
tente isso
fonte
A melhor biblioteca moderna para essa tarefa, na minha opinião, é Picasso by Square. Permite carregar uma imagem em um ImageView por URL com uma linha:
fonte
Eu encontrei recentemente um tópico aqui , pois tenho que fazer algo semelhante para uma lista de exibição com imagens, mas o princípio é simples, como você pode ler na primeira classe de exemplo mostrada lá (por jleedev). Você obtém o fluxo de entrada da imagem (da web)
Em seguida, você armazena a imagem como Drawable e pode transmiti-la ao ImageView (via setImageDrawable). Novamente, no snippet de código superior, dê uma olhada em todo o thread.
fonte
Muitas informações boas aqui ... Encontrei recentemente uma classe chamada SmartImageView que parece estar funcionando muito bem até agora. Muito fácil de incorporar e usar.
http://loopj.com/android-smart-image-view/
https://github.com/loopj/android-smart-image-view
ATUALIZAÇÃO : Acabei escrevendo uma postagem de blog sobre isso , então confira para obter ajuda sobre o uso do SmartImageView.
2ª ATUALIZAÇÃO : Agora sempre uso o Picasso para isso (veja acima) e recomendo. :)
fonte
Esta é uma resposta tardia, conforme sugerido acima
AsyncTask
e, depois de pesquisar um pouco, encontrei mais uma maneira para esse problema.Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
Aqui está a função completa:
Não se esqueça de adicionar as seguintes permissões no seu
AndroidManifest.xml
para acessar a Internet.<uses-permission android:name="android.permission.INTERNET" />
Eu tentei isso sozinho e ainda não enfrentei nenhum problema.
fonte
Thread
porque o encadeamento da interface do usuário não permite operações de rede.fonte
Isso irá ajudá-lo ...
Definir visualização de imagem e carregar imagem nela .....
Em seguida, defina este método:
fonte
fonte
Versão com manipulação de exceção e tarefa assíncrona:
fonte
fonte
Uma maneira simples e limpa de fazer isso é usar a biblioteca de código aberto Prime .
fonte
Este código foi testado, está funcionando completamente.
fonte
Trabalhando para o imageView em qualquer contêiner, como exibição em grade de listview, layout normal
fonte
Tente dessa maneira, espero que isso ajude você a resolver seu problema.
Aqui, explico como usar a biblioteca externa "AndroidQuery" para carregar a imagem do URL / servidor da maneira asyncTask, com também a imagem carregada em cache no arquivo do dispositivo ou na área de cache.
activity_main.xml
MainActivity.java
fonte
O Android Query pode lidar com isso para você e muito mais (como cache e progresso do carregamento).
Dê uma olhada aqui .
Eu acho que é a melhor abordagem.
fonte