【问题标题】:Android - How to download an image and use it as new resource?Android - 如何下载图像并将其用作新资源?
【发布时间】:2010-09-07 09:57:16
【问题描述】:

我想从远程服务器下载图像并将其用作资源。 可能吗 ? 我该怎么做?

【问题讨论】:

    标签: android image resources download


    【解决方案1】:

    有可能吗?

    您可以下载图像。不过,它不会是“资源”。资源打包在 APK 中,不能在运行时修改或添加。

    【讨论】:

      【解决方案2】:

      我就是这样做的:

      private class ImgDownload extends AsyncTask {
          private String requestUrl;
          private ImageView view;
          private Bitmap pic;
      
          private ImgDownload(String requestUrl, ImageView view) {
              this.requestUrl = requestUrl;
              this.view = view;
          }
      
          @Override
          protected Object doInBackground(Object... objects) {
              try {
                  URL url = new URL(requestUrl);
                  URLConnection conn = url.openConnection();
                  pic = BitmapFactory.decodeStream(conn.getInputStream());
              } catch (Exception ex) {
              }
              return null;
          }
      
          @Override
          protected void onPostExecute(Object o) {
              view.setImageBitmap(pic);
          }
      }
      

      【讨论】:

      • 上述解决方案仅适用于小尺寸图像。如果图像较大,则会导致 OutOfMemory 错误。需要缩小图像。
      【解决方案3】:

      是的,您不能将其作为资源文件下载。您可以下载图像并将其存储在您的 SDCard 或数据库中,然后从那里加载...

      要查看如何将图像下载到 SDCard,请参阅此链接

      http://snippets.dzone.com/posts/show/8685#related

      您以后可以像这样从您的 SDCard 加载它

      http://android-er.blogspot.com/2010/01/how-to-display-jpg-in-sdcard-on.html

      这是您从数据库中存储和检索图像的方式

      http://www.helloandroid.com/tutorials/store-imagesfiles-database

      【讨论】:

      【解决方案4】:

      Android Group 的工程师 Gilles Debunne 在博文Multithreading For Performance 中讨论并解决了这个问题。

      它在内部已经使用了AsyncTask。由于它是为 Android 制作的,因此可以下载图像并将其直接设置为 ImageView,使用以下两行代码:

      ImageDownloader imageDownloader = new ImageDownloader();
      imageDownloader.download(url, imageView);
      

      ImageDownloader 类可以在链接的repository 中找到。

      【讨论】:

        猜你喜欢
        • 2021-08-22
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-11
        相关资源
        最近更新 更多