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

如果绘制者视图从不调用.setImageUri( uri ),Fresco会从缓存中随机设置uri

Fresco是Facebook开发的一款强大的Android图片加载库。它提供了许多功能和优势,适用于各种应用场景。

Fresco的核心特性包括:

  1. 内存管理:Fresco使用了一种称为"图片管道"的机制来管理内存,可以有效地避免OOM(Out of Memory)错误。它可以自动根据内存情况调整图片的大小和质量,以提供最佳的用户体验。
  2. 渐进式加载:Fresco支持渐进式加载,可以先显示模糊的低分辨率图片,然后逐渐加载高分辨率的图片。这种加载方式可以提高用户体验,尤其是在网络较慢的情况下。
  3. 缓存策略:Fresco提供了多级缓存策略,包括内存缓存和磁盘缓存。它可以根据图片的使用频率和大小来自动管理缓存,以提高图片加载的效率。
  4. 支持多种图片格式:Fresco支持加载各种常见的图片格式,包括JPEG、PNG、GIF、WebP等。它还支持动态图片的加载和播放。
  5. 支持图片处理:Fresco提供了一些强大的图片处理功能,包括裁剪、旋转、缩放、模糊等。开发者可以根据自己的需求对图片进行处理,以提供更好的用户体验。
  6. 支持多种加载方式:Fresco支持从网络、本地文件、ContentProvider、资源文件等多种来源加载图片。开发者可以根据实际情况选择最合适的加载方式。
  7. 支持动态图片:Fresco支持加载和播放动态图片,如GIF和WebP动画。这可以为应用添加更多的交互和趣味性。

对于绘制者视图从不调用.setImageUri(uri)的情况,Fresco会从缓存中随机设置uri。这意味着Fresco会根据缓存中的图片来显示,而不会根据指定的uri加载新的图片。这种行为可能会导致显示的图片与预期不符,因为它不会根据uri来加载最新的图片。

如果你希望确保显示的图片与指定的uri一致,你应该调用.setImageUri(uri)方法来设置uri,并且确保uri是正确的。这样Fresco会根据指定的uri加载最新的图片,并显示在绘制者视图上。

作为腾讯云的用户,你可以使用腾讯云的图片处理服务来对图片进行处理和管理。腾讯云的图片处理服务提供了丰富的功能和接口,可以满足各种图片处理需求。你可以通过以下链接了解更多关于腾讯云图片处理服务的信息:

腾讯云图片处理服务:https://cloud.tencent.com/product/img

请注意,以上答案仅供参考,具体的实现方式和产品选择应根据实际需求和情况进行决策。

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

相关·内容

Android项目实战(三十):Fresco加载gif图片并播放

Fresco 设计有一个叫做 image pipeline 的模块。它负责网络,本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级文件)。...特性之一: 支持 gif 动态图片     ,也许我们构造一些自定义的类来实现,但是太复杂了,也太麻烦了,Fresco直接帮你封装好了 --------------------------------...(Uri uri) { 63 this.setImageURI(uri, (Object)null); 64 } 65 66 public void setImageURI...如果希望显示的图片保持一定宽高比例,如果 4:3,则在XML: <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/my_image_view...先给控件一个图片占位,当加载成功的时候显示加载的图片 就这么简单 ,其他的<em>Fresco</em>都会帮我们解决 显示占位图直到加载完成; 下载图片; <em>缓存</em>图片; 图片不再显示时,<em>从</em>内存<em>中</em>移除

2.3K80

Android 开发 - 网络图片加载库 Fresco 的使用。

Fresco 设计有一个叫做 image pipeline 的模块。它负责网络,本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级文件)。...,或者在Activity.onCreate方法内,setContentView之前调用Fresco.initialize(this); 3.编写布局 声明命名空间 xmlns:fresco="http...uri = Uri.parse(str2); my_image_view0.setImageURI(uriERR); Fresco的一些概念 DraweeView 继承于 View, 负责图片的显示。...在开始加载之后,图模糊到清晰渐渐呈现。 你可以设置一个清晰度标准,在未达到这个清晰度之前,一直显示占位图。...设置动画图自动播放 如果你希望图片下载完之后自动播放,同时,当View屏幕移除时,停止播放,只需要在 image request 简单设置,如下: Uri uri; DraweeController

1.7K00

Fresco(一)Fresco的使用介绍

主要的原因是,Drawee永远会在getIntrinsicHeight/getIntrinsicWidth返回-1。Drawee 不像 ImageView 一样。它同一时刻可能显示多个元素。...(留着这个疑问,我们到源码解析部分去看) 一般情况下,在XML设置显示效果即可, 如果想更多定制化,可以创建一个 builder 然后设置给 DraweeView List<Drawable...里面就是 Comparator,根据时间戳来决定是否排除响应cache,先排除时间久的 (4)加载图片 setImageURI Uri uri = Uri.parse("https://...(uri); 大致流程如下: 检查内存缓存,如有,返回 后台线程开始后续工作 检查是否在未解码内存缓存。...如有,解码,变换,返回,然后缓存到内存缓存。 检查是否在磁盘缓存如果有,变换,返回。缓存到未解码缓存和内存缓存网络或者本地加载。加载完成后,解码,变换,返回。存到各个缓存

1.4K30

【Android零单排系列九】《Android视图控件——ImageView》

,Glide对比 前言 小伙伴们,在上文中我们介绍了Android视图控件Button控件,本文我们继续盘点,介绍一下Android视图控件的第四个控件——ImageView。...左上角开始绘制原图,原图超过imageview的部分作裁剪处理 alpha 设置透明度 <ImageView android:layout_width="260dp...<em>Fresco</em>:最大的又是在于5.0以下(最低2.3)的Bitmap加载。在5.0以下系统,<em>Fresco</em>将图片放到一个特别的内存区域(Ashmem区)。当然,在图片不显示的时候,占用的内存<em>会</em>自动被释放。...并且默认使用ARGB_8888格式<em>缓存</em>图片,<em>缓存</em>体积大 Glide 支持GIF图片的加载,图片<em>缓存</em>也<em>会</em>自动缩放,默认使用RGB_565格式<em>缓存</em>图片,是Picasso<em>缓存</em>体积的一半 <em>Fresco</em> 优点:...今天就先总结到这,后面<em>如果</em>有问题大家可以评论区留言或者给我发私信。

1.2K30

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

从事Android开发的猿们,一定都经历过对加载图片这件事报以这个表情( ‵o′)凸,每次都被IOS的同事调侃,最先的用Volley下载后LurCache缓存,到后面开源库Universal-Image-Loader...transformations 其他需要注意的,比如不能在非主线程下调用Glide加载图片。...前方安利入教,Fresco大法好( ﹁ ﹁ ) ~→ 4、Fresco 这是一个让人又爱又恨的图片加载,他自带缓存,支持GIF,WebP,缩略图···对图片的缓存管理对5.0以下支持更是妥妥的...);//Fresco的本地缓存 if (file !...设置大量大尺寸的R.drawable.XX资源,因为这种类似的内存释放不及时,多跳转几个页面很不幸你就会有OOM的可能,这问题主要是在于设置背景,一般的loading和fail的图片都不会很大(要那么大干嘛

1.4K20

数据的异步加载和图片保存

,判断如果为null,就调用布局填充器来填充条目布局文件。...()方法,参数:包装对象 如果缓存 对象不为null,就调用缓存对象的getTag()方法,得到包装对象,得到控件对象 调用TextView对象的setText()展示文本 展示图片这个地方,很耗时间,...判断文件存在就直接返回该文件的Uri对象,调用Uri.fromFile(),参数:File对象 get获取网络数据,得到输入流,循环读取保存 读取输入流写到文件输出流 返回Uri对象 在子线程无法更新...UI,采用Handler技术更新UI 在Handler内部类里面的handleMessage方法里,获取到Uri对象 调用ImageView对象的setImageUri()方法,展示图片,参数:Uri对象...delete()方法 删除掉缓存目录 此时如果数目特别多,开启很多的线程,同样很消耗资源 AsyncTask技术采用 (Handler + Thread + 线程池),限定线程的开启数量 代码正在整理

1.1K20

Activity

每个 Activity 都会获得一个用于绘制其用户界面的窗口。...= null){ Uri uri = data.getData(); //返回是标识符指定图片所在的位置的统一资源标识符 img.setImageURI(uri); //...设置给 ImageView } } ---- 保存Activity的状态 当用户 离开Activity去往另一个Activity时;Activity会被压入返回栈,如果内存不够就会被销毁 ,当Activity...;这里可以进行一些释放资源的操作 三种阶段 完整生命周期: 调用的第一个方法 onCreate() 到最后调用一个的方法onDestroy() ,在onCreate()方法可以进行一些全局的配置,UI...的引用,数据的初始化,也可以savedInstanceState读取 保存在设备或者执行reCreate方法前保存的数据等前提savedInstanceSate不为null,在onDestroy(

94260

Picasso,Glide,Fresco对比分析

时间上glide是有一定差距,不过fresco有两张图片没加载完成,所以时间不是完全可靠的数据 native heap可以看出Fresco最高545MB,这个有点恐怖,下面我们看个知识点。...详细属性对比 接下来只详细对比Fresco和Glide Picasso各方面都比这两个弱,这里就不浪费时间了,如果想详细了解的可以看本人之前转载的一篇文章 http://blog.csdn.net...而且Glide直接缓存相对大小的图片,节省空间的同时下场如果是同样大小的图片就不要再次请求,直接可以使用。 依赖 Glide ?...= null) { setImage(ImageSource.uri(Uri.fromFile(resource.getFile()))); } 优点 Glide 多种图片格式的缓存...相对而言Glide轻好多,上手快,使用简单,配置方便,而且加载速度和性能方面不相上下。对于一般的APP来说Glide是一个不错的选择,如果是专业的图片APP那么Fresco还是必要的。

4.6K20

实用的 Android 开源库整理

在Android的开发过程,每个开发或多或少的都使用过第三方的开源库,使用第三方的开源库可以给开发节省大量的精力和时间,进而更好的关注应用本身的业务逻辑。...下面列出一些开发们非常常用的开源库。 Fresco Fresco是非常强大的显示图像的开源库,它能够很好的处理图像的加载和显示。...能够加载网络、本地数据库、本地资源的图像,在图像加载出来之前,还能够预先设置一个预设的图像占位符,有二级缓存(内存和硬盘缓存) dependencies { // your app's other...main(String[] args) { Flowable.just("Hello world").subscribe(System.out::println); } } 如果你使用的平台还没有支持...dependencies { compile 'com.github.PhilJay:MPAndroidChart:v3.0.1' } ButterKnife ButterKnife是一个视图的绑定工具

68410

借鉴Glide思想二次封装Fresco背景二次封装使用示例Github 地址

用法及大概用途 GenericDraweeHierarchy 用法及大概用途 如果涉及到一些网络下载监听,缓存之类的,那么你还要了解: Imagepipeline 用法及大概用途 总之,Fresco...DFresco第二步.png 当调用了 source() 后就进入了第二个步骤,这个步骤,我将图片相关的配置设计到另外一个步骤中去,否则连同图片配置的 api 也都在这里的话,会搞得蛮乱的,可能让使用到这里后不清楚该调用哪些接口了...enterImageConfig() 如果你都使用默认配置的话,那么是不用再去调用那些各种配置的接口的,所以我才将图片配置封装到另外一个步骤,这个步骤你可进,可不进,如果有需求,那么通过这个方法进入图片配置步骤...这样封装的目的在于,你可以通过一条调用链的形式就设置完所有的配置,就像 Glide 的使用一样,而不用再去 new 很多 Fresco 的类,再去拼接。...当然,为了防止再次进入图片配置步骤这样造成之前的配置项失效的场景,我借鉴了 Fresco 的 init 处理方法,即,如果一次使用过程,重复进入图片配置步骤,那么程序抛异常来提醒你不能这么做。

74520

Android 打造一个丝滑的自动轮播控件

setCurrentItem() 方法,将当前 ViewPager 的 Item 设置为对应的 position + 1 的数据,所以我们只要在外部调用 Handler 的 sendMessage()...1.2 让 ViewPager 最后一张滑动到第一张 我们知道,ViewPager 是无法最后一页滑动到第一页的,但我们可以换一个思路,如果我们在 ViewPager 的 Adapter 里面,通过...,来实现从最后一张滑动到第一张的,但这时候如果不进行缓存的话,我们在 Adapter 的 instantiateItem(ViewGroup container, final int position)...所以我们可以通过一个 List 作为缓存池,在 Adapter 的 destroyItem() 方法中将废弃的 object 存到缓存池中,重复利用,这样便能避免内存浪费。... List 取出已经被缓存的 View,进行重复利用 public Object instantiateItem(ViewGroup container, final int position

50320

Android-Universal-Image-Loader源码分析

,用于加载内存缓存的图片; LoadAndDisplayImagTask :处理加载和显示图像的任务,用于Internet或文件系统加载图像为 Bitmap; Config配置 初始化配置参数,参数...,默认最大数量为Long.MAX_VALUE; final DiskCache diskCache; //通过URI网络或文件系统或应用程序资源检索图像,默认为HttpURLConnection...,如果相同那么刷新缓存。...); listener.onLoadingStarted(uri, imageAware.getWrappedView());//回调展示开始 //内存获取缓存的memoryCacheKey...如果图片展示配置有url为空的默认处理图那么加载默认图; 获取当前需要加载图的size; 获取缓存的key 5.1. 根据key内存缓存获取bitmap,且bitmap有效; 5.1.1.

1.7K40

一起来看看 Android 官推 kotlin-first 的图片加载库

Fresco 要轻量非常多 更容易使用:Coil 的 API 充分利用 Kotlin 的新特性,而且还有丰富的拓展函数,简化和减少了很多样板代码 更流行:Coil 通过 Kotlin 来开发,并且使用包含...Coroutines、okhttp、okio 和 AndroidX Lifecycles 在内的非常多流行的开源库 Coil 的特性可以看出,这是一个非常适合个人 App 使用的图片加载库,特别是纯...相比于 glide 和 fresco 有着非常复杂的结构和惊人的代码量,Coil 只有 2000 左右的方法数,所以也很适合进行源码研究和学习。...GrayscaleTransformation 图片置灰 RoundedCornersTransformation 添加圆角 三、功能拓展 ---- Coil 在提供了很多必要功能的基础上,预留了很多的拓展点给开发实现自定义...) } ResourceUriFetcher 判断 Uri 的 scheme 类型是否为 android.resource,是的话代表本地资源文件,而 HttpUriFetcher 则判断 Uri

85320
领券