漂泊的河 2016-02-26 03:09 采纳率: 33.3%
浏览 1393
已采纳

安卓关于下载图片和下载文件的问题

图片

安卓中下载图片有几种方法?用URL下载?

文件

文件都是从服务器中下载下来后解析吗?

  • 写回答

3条回答 默认 最新

  • Exploring1024 2016-02-26 03:37
    关注

    如果自己加载的话,需要自己写网络去请求url地址进行下载。类似于这样

     URL url = new URL(uri);
                    HttpURLConnection conn = (HttpURLConnection)url.openConnection();
                    conn.setRequestMethod("GET");
                    conn.setReadTimeout(10000);
    
                    if (conn.getResponseCode() == 200) {
                        InputStream fis =  conn.getInputStream();
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        byte[] bytes = new byte[1024];
                        int length = -1;
                        while ((length = fis.read(bytes)) != -1) {
                            bos.write(bytes, 0, length);
                        }
                        picByte = bos.toByteArray();
                        bos.close();
                        fis.close();
    
                        Message message = new Message();
                        message.what = 1;
                        handle.sendMessage(message);
                    }
    
    
                }catch (IOException e) {
                    e.printStackTrace();
                }
    

    第二种就是用开源的一些框架,比如ImageLoader:

     public class ImageLoaderPicture {
    
        private DisplayImageOptions options;
    
        public ImageLoaderPicture(Context context) {
    
            ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2)
            .denyCacheImageMultipleSizesInMemory()
            .discCacheFileNameGenerator(new Md5FileNameGenerator())
            .tasksProcessingOrder(QueueProcessingType.LIFO).enableLogging() 
            .memoryCache(new WeakMemoryCache())                                 
            .build();
            ImageLoader.getInstance().init(config);
    
            options = new DisplayImageOptions.Builder()
            .showStubImage(0)
            .showImageForEmptyUri(0)
            .showImageOnFail(0)
            .cacheInMemory().cacheOnDisc()
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
            .bitmapConfig(android.graphics.Bitmap.Config.RGB_565)
            .build();
        }
    
        public DisplayImageOptions getOptions() {
            return options;
        }
    
        public void setOptions(DisplayImageOptions options) {
            this.options = options;
        }
    
    

    最后还可以使用谷歌官方提供的框架Volley进行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作