首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Fresco SimpleDraweeView.setImageURI不适用于此http url

Android Fresco是Facebook开源的一款用于Android平台的图片加载库,它提供了高效的图片加载和显示功能。SimpleDraweeView是Fresco库中的一个自定义View,用于显示图片。

在使用Fresco的SimpleDraweeView的setImageURI方法加载图片时,如果传入的是一个http url,可能会出现不适用的情况。这是因为Fresco默认情况下不支持加载非安全的http图片,而是要求使用https协议来加载图片。

为了解决这个问题,可以通过以下几种方式来处理:

  1. 使用https协议的图片链接:推荐使用https协议的图片链接来加载图片,这样就可以直接使用setImageURI方法加载图片,而不会出现不适用的情况。
  2. 使用Fresco的ImageRequest:可以使用Fresco的ImageRequest来加载http图片。ImageRequest可以通过ImageRequestBuilder构建,指定图片的URI和其他参数,然后使用ImagePipeline的fetchDecodedImage方法来加载图片。

示例代码如下:

代码语言:txt
复制
Uri uri = Uri.parse("http://example.com/image.jpg");
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
        .build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
        .setImageRequest(request)
        .setOldController(simpleDraweeView.getController())
        .build();
simpleDraweeView.setController(controller);
  1. 使用OkHttp或其他网络库加载图片:如果需要加载非安全的http图片,可以使用OkHttp或其他网络库来加载图片,然后将加载到的图片数据设置给SimpleDraweeView。

示例代码如下:

代码语言:txt
复制
Uri uri = Uri.parse("http://example.com/image.jpg");
Request request = new Request.Builder()
        .url(uri.toString())
        .build();
OkHttpClient client = new OkHttpClient();
client.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        // 处理加载失败的情况
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        // 处理加载成功的情况
        ResponseBody body = response.body();
        if (body != null) {
            InputStream inputStream = body.byteStream();
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            simpleDraweeView.setImageBitmap(bitmap);
        }
    }
});

总结:Android Fresco的SimpleDraweeView.setImageURI方法默认情况下不适用于非安全的http图片链接。可以通过使用https协议的图片链接、使用Fresco的ImageRequest或使用OkHttp等网络库来加载图片来解决这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Fresco急速入门及最最最简单使用教程,是时候来了解Fresco了!

在本教程中,您将学习如何使用fresco android图像库。 Fresco是由Facebook开发人员创建的图像库,可用于显示来自互联网或本地存储的图像。...下面我一个简单的例子展示了这个库的用法。 ---- Fresco Android教程 使用包名com.frescoandroid创建一个android studio项目  。...MyApplication.java package com.frescoandroid; import android.app.Application; import com.facebook.drawee.backends.pipeline.Fresco...还可以通过添加xmlns来提及顶级元素中的自定义命名空间  :fresco =“http://schemas.android.com/apk/res-auto” 属性。...---- 运行截图 要了解壁画库的更多功能,请访问其官方网站  http://frescolib.org/。

1.1K20
  • Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide图片缓存库的联系与区别

    前言 Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片比较。...在这里介绍一下Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide的一些使用以及最基本的用法介绍。..., android.R.drawable.ic_delete); mImageLoader.get(url, listener); volley Volley提供了一个新的控件NetworkImageView...Fresco 支持 Android2.3(API level 9) 及其以上系统。 解压后的图片,即Android中的Bitmap,占用大量的内存。大的内存占用势必引发更加频繁的GC。...Fresco 在低端机器上表现一样出色,你再也不用因图片内存占用而思前想后。此外,Android 本身的图片库不支持此格式,但是Fresco支持。

    1.3K70

    Android图片加载开源库深度推荐,安利Fresco1、Universal-Image-Loader2、Picasso3、Glide4、Fresco

    从事Android开发的猿们,一定都经历过对加载图片这件事报以这个表情( ‵o′)凸,每次都被IOS的同事调侃,从最先的Volley下载后LurCache缓存,到后面开源库Universal-Image-Loader...,Picasso,Glide,Fresco,终于Android的图片加载也迎来了春天,现在就让我们拥抱春天,用力~(后方大波Fresco福利)。...对啊,女朋友···呸呸呸,那么就来讲一讲哪些库好(你应该已经在知道了)。剧透一下(主要推荐Fresco),剧透一下(主要推荐Fresco),剧透一下(主要推荐Fresco)~~~请看到最后好不。...为什么着重推荐这个,因为如果是的是圆形的ImageView或者特殊裁剪的什么,那么很可能会有问题。 什么问题?反正大家都这么说的 ,这库就对了。 ?...挺好的啊~这·····因为某次我要把通过图片URL拿本地缓存的时候,我居然找不到同步获取的方法(ノಠ益ಠ)ノ彡┻━┻,除了异步的回调之外,我居然找不到····而且听说Fresco对GIF和webp支持更好

    1.4K20

    Picasso,Glide,Fresco对比分析

    前言 图片加载是Android开发中最最基础的功能,同时图片加载OOM也一直困扰着很多开发者,因此为了降低开发周期和难度,我们经常会选用一些图片加载的开源库。...13.9MB max native heap 43.8MB 43.8MB 43.8MB avg wait time 241ms 34ms 44ms 从上面的加载静态图片可以看出三大主流框架性能都不错,不过数据说话整体而言...详细属性对比 接下来只详细对比Fresco和Glide Picasso从各方面都比这两个弱,这里就不浪费时间了,如果想详细了解的可以看本人之前转载的一篇文章 http://blog.csdn.net...bitmap操作 Glide Bitmap myBitmap = Glide.with(上下文) .load(url) .asBitmap() //必须 .get...().getMainFileCache().getResource(new SimpleCacheKey(url)); if (resource !

    4.7K20

    Carson带你学Android:这是一份详细的 Retrofit使用教程(含实例讲解)

    :主流开源图片加载库对比(UIL、Picasso、Glide、Fresco) Carson带你学Android:主流开源网络请求库对比(Volley、OkHttp、Retrofit) Carson带你学...请求 抽象成 Java接口:采用 注解 描述网络请求参数 和配置网络请求参数 动态代理 动态 将该接口的注解“翻译”成一个 Http 请求,最后再执行 Http 请求 注:接口中的每个方法的参数都需要使用注解标注...的类 金山词霸API 的数据格式说明如下: // URL模板 http://fy.iciba.com/ajax.php // URL实例 http://fy.iciba.com/ajax.php?...的类 API 的数据格式说明如下: // URL http://fanyi.youdao.com/translate // URL实例 http://fanyi.youdao.com/translate...源码 Carson带你学Android开源库系列文章: Carson带你学Android:主流开源图片加载库对比(UIL、Picasso、Glide、Fresco) Carson带你学Android

    3.5K20

    基于开源项目搭建属于自己的技术堆栈

    身边朋友就有这样的亲身经历: 面试官:你们项目中加载图片都是的什么框架? 面试者:Glide 啊(内心窃喜) 面试官:为什么使用 Glide 而不用其他的?...7.1 BitmapFun BitmapFun 函数库是 Android 官方教程中的一个图片加载和缓存实例,对于简单的图片加载需求来说,使用 BitmapFun 就够了,在早期的多,现在渐渐退出了实际项目开发的舞台...Picasso.with(context).load(url).into(imageView); 7.3 Glide Glide 是 Google 推荐的用于 Android 平台上的图片加载和缓存函数库...Glide 的使用也可以使用一行代码来完成,语句如下 Glide.with(context).load(url).into(imageView); 7.4 Fresco Fresco 是 Facebook...对于一般的 APP,选择 Fresco 会显得比较重,毕竟 Fresco 3.4MB 的体量摆在这。

    1.9K70

    Carson带你学Android:这是一份详细的 Retrofit使用教程(含实例讲解)

    :主流开源图片加载库对比(UIL、Picasso、Glide、Fresco) Carson带你学Android:主流开源网络请求库对比(Volley、OkHttp、Retrofit) Carson带你学...请求 抽象成 Java接口:采用 注解 描述网络请求参数 和配置网络请求参数 动态代理 动态 将该接口的注解“翻译”成一个 Http 请求,最后再执行 Http 请求 注:接口中的每个方法的参数都需要使用注解标注...的类 金山词霸API 的数据格式说明如下: // URL模板 http://fy.iciba.com/ajax.php // URL实例 http://fy.iciba.com/ajax.php?...的类 API 的数据格式说明如下: // URL http://fanyi.youdao.com/translate // URL实例 http://fanyi.youdao.com/translate...源码 Carson带你学Android开源库系列文章: Carson带你学Android:主流开源图片加载库对比(UIL、Picasso、Glide、Fresco) Carson带你学Android

    2.2K10

    Android:彻底消灭OOM的实战经验分享(千分之1.5 -> 万分之0.2)

    除了LeakCanary,我们还使用了Android Studio自带的Profiler工具对内存有进行分析,包括内存泄漏的问题和内存峰值过高的问题。...在排查bitmap对象,我们可以Profiler直接看java 堆中的bitmap对象图片的预览~ 这样可以直接定位到是哪里泄漏了以及哪里bitmap加载过大 方法:找到对应的Bitmap对象,然后~...当然,特大图不仅限于此,还有其他地方会有相同情况,我们通过Profiler找出那些大的bitmap对象,然后预览之后确定是哪里在用的。 直接优化掉。...内存泄漏会导致内存峰值,内存峰值是OOM的大锅,举个例子当可用内存不够分配一个Bitmap对象时,就会OOM,Android上大多数的内存峰值都是图片的加载带来的。...转发+点赞+关注,第一时间获取最新知识点 Android架构师之路很漫长,一起共勉吧!

    1.3K60

    Android中一张图片占据的内存大小是如何计算提问正文推荐阅读

    以上场景中列出了图片的不同来源,不同 Android 设备,显示控件的不同大小这几种考虑点下的场景。.../Picasso,默认 ARGB_8888 Picasso.with(imageView.getContext()).load(url).config(Bitmap.Config.RGB_565).into...所以,我在图片内存大小这一章节中,才会说到,如果你使用了某个开源库图片,那么,那么理论就不适用了,因为系统开放了 inSampleSize 接口设置,允许我们对需要加载进内存的图片先进行一定比例的压缩,...而这些图片开源库,内部自然会利用系统的这些支持,做一些内存优化,可能还涉及其他图片裁剪等等之类的优化处理,但不管怎么说,此时,系统原生的计算图片内存大小的理论基础自然就不适用了。...以上场景之所说有可能,是因为,一旦使用某个热门的图片开源库,那么,以上理论基本就不适用了。

    1.6K20
    领券