如何在Android中通过URL加载ImageView?

572

如何在ImageView中使用通过URL引用的图片?


1
尝试这个:https://dev59.com/QG3Xa4cB1Zd3GeqPcDeG#15797963 - comeGetSome
2
使用Picasso...https://dev59.com/h3E95IYBdhLWcg3wEpvo#23865531 - chiragkyada
公共类ImageDownloader { private final Executor executor = Executors.newSingleThreadExecutor(); public void download(String url, Consumer<Bitmap> onSuccess, Consumer<Exception> onError) { Handler handler = new Handler(); executor.execute(() -> { try (InputStream in = new URL(url).openStream()) { Bitmap result = BitmapFactory.decodeStream(in); handler.post(() -> onSuccess.accept(result)); } catch (Exception e) { handler.post(() -> onError.accept(e)); } }); } } - Sarsaparilla
23个回答

3
在任何容器中都能使用imageView工作,比如listview、grid view和普通布局。
 private class LoadImagefromUrl extends AsyncTask< Object, Void, Bitmap > {
        ImageView ivPreview = null;

        @Override
        protected Bitmap doInBackground( Object... params ) {
            this.ivPreview = (ImageView) params[0];
            String url = (String) params[1];
            System.out.println(url);
            return loadBitmap( url );
        }

        @Override
        protected void onPostExecute( Bitmap result ) {
            super.onPostExecute( result );
            ivPreview.setImageBitmap( result );
        }
    }

    public Bitmap loadBitmap( String url ) {
        URL newurl = null;
        Bitmap bitmap = null;
        try {
            newurl = new URL( url );
            bitmap = BitmapFactory.decodeStream( newurl.openConnection( ).getInputStream( ) );
        } catch ( MalformedURLException e ) {
            e.printStackTrace( );
        } catch ( IOException e ) {

            e.printStackTrace( );
        }
        return bitmap;
    }
/** Usage **/
  new LoadImagefromUrl( ).execute( imageView, url );

+1 感谢您提供完整、易懂的解决方案。 - PeteH

3

一个简单而清晰的方法是使用开源库Prime来完成。


3
Android Query可以为您处理此类问题,还可以处理缓存和加载进度等更多内容。请查看这里。我认为这是最好的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接