有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有没有办法从多个URL获取多个图像?

这些图像来自不同的URL,我想在ListView中显示它们。每个URL代表一个图像,在每个图像都有唯一ID的情况下,如何使用图像URL显示所有图像

http://www.samplesite.com/Customer/File/DownloadResource/”imageID”?token=“+m_token

08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err: java.io.FileNotFoundException: http://samplesite.com/Customer/File/DownloadResource/220?token=aGkvWUlQSW9EeVZmU3pQOFF6WWo5OU4raGdzVjBrSngzWEQvbkNueWxYdz06dGVzdDFAYXBpLmNvbTo2MzYwNjg0OTU0MDgyMDAwMDA6Qw==
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at com.安卓.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at com.app.tysomcustomer.dashboard.LoyaltyFragment$ConvertImageUrlTask.doInBackground(LoyaltyFragment.java:320)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at com.app.tysomcustomer.dashboard.LoyaltyFragment$ConvertImageUrlTask.doInBackground(LoyaltyFragment.java:277)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at 安卓.os.AsyncTask$2.call(AsyncTask.java:295)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at 安卓.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
08-15 17:19:01.301 25505-25959/com.app.projectactivity W/System.err:     at java.lang.Thread.run(Thread.java:818)

共 (2) 个答案

  1. # 1 楼答案

    使用HttpURLConnection从URL获取输入流。然后使用BitmapFactory将此流解码为位图。 请记住不要在主线程中运行此代码。否则,它将阻止任何内容,直到图像被下载和解码

    try {
        URL url = new URL("http://www.samplesite.com/Customer/File/DownloadResource/" + imageID + "?token="+ m_token);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    
        Bitmap mBitmap = BitmapFactory.decodeStream(urlConnection.getInputStream());
        urlConnection.disconnect();
    
    } catch (IOException e) {
        e.printStackTrace();
    }
    
  2. # 2 楼答案

    要异步下载多个图像文件,您应该使用诸如Universal image Loader、Fresco、毕加索、Glide、Volley image Loader等库

    我个人最喜欢的是Universal Image Loader

    它为您提供了执行某些任务的选项,如onLoadingStarted, onLoadingFailed, onLoadingComplete, onLoadingCancelled

    这是从服务器加载图像而不必担心asycTask的最佳方法,并且在列表视图中工作良好