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

使用Picasso和Target同时下载两幅图像。但没有完成并加载图像

使用Picasso和Target同时下载两幅图像,但没有完成并加载图像。

首先,Picasso是一个强大的Android图像加载库,它可以帮助我们方便地加载和显示图像。Target是Picasso提供的一个接口,用于处理图像加载的回调。

要同时下载两幅图像,可以使用Picasso的load()方法来加载图像,并使用into()方法将图像加载到指定的Target对象中。以下是一个示例代码:

代码语言:java
复制
// 创建两个Target对象
Target target1 = new Target() {
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
        // 图像加载成功的回调处理
        // 在这里可以对bitmap进行处理或显示
    }

    @Override
    public void onBitmapFailed(Exception e, Drawable errorDrawable) {
        // 图像加载失败的回调处理
    }

    @Override
    public void onPrepareLoad(Drawable placeHolderDrawable) {
        // 图像加载准备的回调处理
    }
};

Target target2 = new Target() {
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
        // 图像加载成功的回调处理
        // 在这里可以对bitmap进行处理或显示
    }

    @Override
    public void onBitmapFailed(Exception e, Drawable errorDrawable) {
        // 图像加载失败的回调处理
    }

    @Override
    public void onPrepareLoad(Drawable placeHolderDrawable) {
        // 图像加载准备的回调处理
    }
};

// 使用Picasso加载图像并将其分别加载到两个Target对象中
Picasso.get()
        .load("图片1的URL")
        .into(target1);

Picasso.get()
        .load("图片2的URL")
        .into(target2);

在上面的代码中,我们创建了两个Target对象,分别用于处理两幅图像的加载回调。然后,我们使用Picasso的load()方法加载图像,并使用into()方法将图像加载到对应的Target对象中。

当图像加载完成时,Picasso会自动调用对应Target对象的onBitmapLoaded()方法,并传递加载的图像Bitmap对象。我们可以在这个回调方法中对图像进行处理或显示。

需要注意的是,为了确保Target对象能够正常接收到回调,我们需要保持对Target对象的引用,以防止被垃圾回收。

这是一个使用Picasso和Target同时下载两幅图像的示例。通过这种方式,我们可以方便地处理多个图像的加载,并在加载完成后进行相应的处理。

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

相关·内容

Picasso源码分析对比

今天讲述的picasso是Square公司开源的一个Android图片加载库,可以实现图片下载和缓存功能。它 ImageLoader Glide 的都有些相同和和不同点以及自己独特的点。...用于构建图片下载的Request 。 Request :一个不可变的数据,用于控制图片使用之前的加载变化。提供 Builder 进行数据的参数设置。...RequestCreator的构造 我们知道 Picasso 支持加载 Uri ResourceId ,所以我们先来看看这个数据类型的 load 的方法。...Downloader :一种从外部资源(例如磁盘缓存网络)加载图像的机制。 public interface Downloader { //从互联网下载指定的图像。...总结 前面的 Android-Universal-Image-Loader源码分析 Glide源码阅读理解一小时 有过 Glide ImageLoader 的对比,这次我们将 Picasso 与这个图片加载库再次进行对比

1.1K20

【译】图片尺寸重调整,缩放与自适应

原文链接: Image Resizing, Scaling and fit() 原文作者: Future Studio 译文出自: 小鄧子的简书 译者: 小鄧子 状态: 完成 使用...如果不改善图像质量,而仅仅是将小图放大,是非常浪费计算时间的,可以使用.onlyScaleDown()只对那些当原始图像尺寸大于目标控件尺寸的用例中,这种情况下,Picasso才会对图像进行尺寸重调整。...Picasso提供了套缓解方案,要么调用.centerCrop(),要么调用.centerInside()。...关于fit()有件事需要了解。第一,因为Picasso需要等待目标ImageView的测量完成,所以fit()可能会延迟加载图像。...第二,使用fit()的前提条件是:只能是ImageView作为加载target(我们将会在随后介绍其他target)。 在不影响图像质量的前提下,应该尽量降低图像的分辨率。

99140

【译】Callback,Notification与RemoteView

Callback与Target 在了解callback之前,值得一提的是Picasso有多种图像加载方式。...大体可分为同步异步种。 fetch(),get()与target之间的区别与联系 .fetch()会在后台线程中异步加载图片,但不会展示到ImageView上,也不会返回该图片对象。...它只会把图像保存到磁盘或内存中。它在后台缓存那些稍后会用到的图片,从而降低加载时间。 .get()同步加载图片,返回Bitmap对象。确保不要在UI线程调用.get(),否则会造成UI线程的阻塞。...我们还可以实现一个Target接口。 之前的加载方式一样,只不过不再将图像直接展示到ImageView上,而是通过Target回调,返回Bitmap对象(或者异常)。 来看一个示例。...我们感兴趣的是下一步:加载图像至ImageView。 Picasso的调用非常简单。与加载到ImageView上相似,我们也对RemoteView使用.into()函数。

76410

拆 JakeWharton 系列之 Picasso

Hunter:工作线程,负责图片的下载、解码、转换。 第一次加载时,没有任何内存磁盘缓存,第二次加载时,主线程直接从缓存中读取图片即可,日志如下: ?...Dispatcher:分发器,负责分发处理图片加载的不同阶段,如提交(入队)、取消、暂停、继续、完成、重试、网络状态变化等,内置了 HandlerThread 来处理大部分无需主线程处理的任务,有了分发器的存在...缓存 内存磁盘缓存策略及实现是图片框架必不可少的部分。Picasso 中的级缓存都采用了 LRU 的缓存策略。...Picasso 内置了图片下载器 OkHttp3Downloader,本质上是使用自家的 OkHttp 进行图片下载内置了缓存策略 DiskLruCache,默认可缓存的文件大小总数为 50M 。...值得注意的细节 Picasso 的所有代码均在一个 package 中,其好处是可以将大部分类方法的访问权限均设置 default 的,对外隐藏,对内暴露,缺点则是代码分类略显杂乱,相比优点其代码量小的特点来说

52420

图片加载利器——Picasso

简单来说 其强大的部分在于,可以实现图片下载和缓存功能,并且完全通过一行代码就能实现图片的异步加载Picasso.with(context).load("http://i.imgur.com/DvpvklR.png...2.使用复杂的图片压缩转换来尽可能的减少内存消耗 3.自带内存硬盘二级缓存功能 特性以及示例代码: ADAPTER 中的下载:Adapter的重用会被自动检测到,Picasso会取消上次的加载 @Override...Place holders-空白或者错误占位图片:picasso提供了种占位图片,未加载完成或者加载发生错误的时需要一张图片作为提示。...图片未完成加载的时候显示图片 fit调整大小以达到精确的大小 resize(int targetWidth, int targetHeight) 将图像大小调整为像素的大小 resizeDimen...,就调整图像的大小(需要和resize关联) config(Bitmap.Config config)尝试使用指定的配置来解码图像 priority(Priority priority) 设置此请求的优先级

57430

【译】占位图与渐变效果

如果你使用Picasso,你可能更倾向于通过网络连接来加载图像。依赖于你所处的网络环境,加载过程可能需要大量时间。...一个比较优雅的方式就是先放置一个占位图,直到真正的图像加载处理完成之后,再进行替换。 Picasso的流式接口调用方式让操作变得异常简单。...App本身的资源文件是很方便使用访问的。然而,对于.load()来说,Picasso能够接受各种参数值,因此可能出现不可加载(如,无网络链接,服务器宕机等),资源被删除或者无访问权限等现象。...noFade()的运用 无论你是要在加载完成之前展示一个展位图还是其他,Picasso为了让UI视图的改变更加揉,会使用一个渐变效果将图像添加到ImageView上。...当第一个图像加载完成后,立即开始第二个图像加载请求。然而,由于.noPlaceholder()的使用,它在恰当的时机保持了之前的图像不变。

93220

Android开发笔记(七十七)图片缓存算法

如果内存没找到,再到磁盘寻找,如果有找到,则读取磁盘图片显示。如果磁盘也没找到,就得根据uri去网络下载图片,下载成功后显示图片。...内存缓存的数据结构可使用映射表HashMap,通过唯一的uri来定位图像的Bitmap对象;排队算法一般采用先进先出FIFO策略,考虑到FIFO需要对队列端做操作,从队列顶端移除溢出的图像,把新增的图像加到队列末端...picasso是Square公司开源的一个Android图片缓存库,使用相对简单,一般只需一句代码即可下载图片显示到视图。...设置缓存目录 picasso除了能加载网络图片,还能加载资源图片(包括assetsdrawable)。...),需要同时导入picasso、okhttp、okio三个jar包。

1K70

【译】自定义RequestHandler

我们所实现的RequestHandler应该至少可以做网络请求,或者从手机的磁盘中加载图像。简单起见,我们仅仅匹配了个最常见的Uri路径,然后通过应用的资源文件加载图像。...最后,我们应该创建Result对象,返回处理后的Bitmap。它是Bitmap的包装类,用来持有资源等属性。在这个用例中,我们从磁盘中加载图像。 请求示例 干货已经足够了,让我们来看一些示例。...以往一样,如果使用Picasso加载标准http请求,那么将无法用到刚刚定义的RequestHandler(因为http的scheme无法与eatfoody匹配)。...Picasso将会正常的加载图像。...Picasso会检测我们的RequestHandler是否能处理这个任务,亦或是让我们从磁盘中加载适当的图像。 总结 Picasso让处理自定义Uri scheme变的尽可能简单。

43810

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

1.图片加载框架 imageloader picasso Glide Fresco ImageLoader:旨在为图像加载,缓存显示提供强大,灵活可定制的工具。...他提供了大量的配置选项良好的控制图像加载和缓存过程。...ImageView尺寸相同的(即56*56128*128是个缓存)。...2.图片框架ImageLoader,Picasso,Fresco,Glide对比 ImageLoader 比较老的框架,稳定,加载速度适中,缺点在于不支持GIF图片加载使用稍微繁琐,并且缓存机制没有...http的缓存很好的结合,完全是自己的一套缓存机制 Picasso 使用方便,一行代码完成加载图片显示,框架体积小 缺点在于不支持GIF,并且他可能是想让服务器去处理图片的缩放,他缓存的图片是未缩放的,

1.2K30

【译】与Adapter一起使用(ListView, GridView, ...)

尽量保证其逻辑简单,然后绑定eatfoody的示例图像到Adapter中。每个Item展示一张图片。...Picasso有一个非常出色的特性,那就是它能够自动取消加载请求,清空ImageView上的图像,然后为适当的ImageView加载正确的图像。...边注:fit()tags()作为可选项,可用来进一步优化Adapter,我们将在接下来的文章中介绍。 ? Picasso的强项:缓存 当你上下滑动时,你会发现图像的展示比之前快多了。...你可能已经猜到了,这些图像来自于缓存,并非再次通过网络加载Picasso的缓存实现非常的全面,帮你把事情变得简单。缓存的大小取决设备的磁盘容量。 每当加载一张图像时。...Picasso有三种加载来源:内存,磁盘网络(顺序由快到慢)。再强调一遍,这里并没有什么是你必须要做的。在创建缓存大小方面,Picasso对你隐藏了所有的复杂细节。

1.2K20

Android 框架学习4:一次读懂热门图片框架 Picasso 源码及流程

、错误占位图,同时定义了个抽象方法,这个方法的作用是当图片加载成功后会调用 complete()(参数是拿到的图片和加载来源),加载失败后会调用 eror(),子类继承后可以实现自己特定的操作。...GetAction:拿到图片后不会有任何操作,不知道干啥的 Picasso.get() 方法会使用到它,这个方法会同步加载图片返回 Bitmap 对象,请确保你没有在Ui线程里面使用.get()...使用 okhttp3 来完成下载的功能,其中的下载器 downloader 就是通过构造一个 okhttp.Call 来完成同步下载文件: @NonNull @Override public Response...除了 Picasso ,其他比较知名的框架都会用到“外观模式” ,我们在编写复杂逻辑或者 SDK 时应该在完成各个子模块以后,在它们的上面增加一层,由这一层来各个模块交互,给使用者提供统一、简单的调用接口...同一张图片不同的尺寸内存缓存无法命中,会再去磁盘加载一次(实际上还要考虑缓存策略),虽然效率比直接去内存读低,好处是比网络下载快,在使用同一图片时尺寸配置都一样的情况下,相对占用内存也更少 据说

64340

【译】使用标签实现图像加载的分组管理

如果你的视图变化很快,那么对于取消较早的图像加载,已经离开屏幕的,以及为新的视图开启图像加载来说是非常有用的。幸运的是,Picasso提供了.tag()函数,用来实现这些需求。...关于图像加载分组,需要关注以下几点: 使用.pauseTag()暂停请求 使用.resumeTag()恢复请求 使用.cancelTag()取消请求 基本来讲,无论何时,你需要取消或者暂停一个甚至多个图像加载时...然而,由于用户滑动速度太快,Picasso一次又一次的尝试为每个单元条目启动图像加载请求,然后又不得不立刻取消该加载请求。 更有效的方式应该是暂停所有的图像加载,直到停止滚动。...以上示例中的代码,摘自于Picasso官方实例工程。 示例#2:cancelTag() 上面所涉及的ListView代码示例,并没有使用到cancelTag()函数。让我们试想另一个场景。...因此,没有什么理由让图像持续加载,从而为网络,电量内存等增加无谓的负担。 我们可以在显示ProgressDialog之后,通过调用.cancelTag()来优化这种行为。

1K20

【译】缓存指示器,日志与状态

如果阅读了之前的所有文章,那么你一定记得Picasso使用种缓存策略:磁盘缓存内存缓存。...示例如下: Picasso .with(context) .setIndicatorsEnabled(true); 所有图像请求后,都会在左上角显示一个小型指示器。 ?...每一种颜色都代表一种来源: 绿色(来自内存,效率最高) 蓝色(来自磁盘,效率良好) 红色(来自网络,效率最低) 日志 因为颜色指示器能够帮助定位缓存来源,因此可以在一定程度上解决图像加载缓慢的问题。...一旦开始加载图像,便可以通过logcat查看关于Picasso请求的详细信息。Picasso将打印所有相关数据。...[R0]+807ms from NETWORK D/Picasso﹕ Dispatcher delivered [R0]+809ms 状态快照 最后,并非最不重要,你可能需要了解大局情况

32130

Glide用法与技巧以及优秀库的推荐

Picasson的优化版,使用简单,也许没有Fresco那么强大,但是觉得完全可以hold住大部分项目。...比较 Picasso 与 Glide 1.使用方式类似,Glide的with()接受的不仅仅是Context,还可以是Activity或是Fragment,Context会自动的从他们获取。...同时将Activity/Fragment作为with()参数的好处是:图片加载Activity/Fragment的生命周期保持一致,比如Paused状态在暂停加载,在Resumed的时候又自动重新加载...所以我建议传参的时候传递Activity Fragment给Glide,而不是Context。 2.Glide加载的图片质量要略差于Picasso,这又是为什么呢?...3.者在磁盘缓存策略上有很大的不同。Picasso缓存的是全尺寸的,而Glide缓存的是跟ImageView尺寸相同的。Glide的这种方式优点是加载显示非常快。

69120

【译】开始使用,简单加载

原文链接: Getting Started & Simple Loading 原文作者: Future Studio 译文出自: 小鄧子的简书 译者: 小鄧子 状态: 完成 为什么使用...有经验的Android开发者可以跳过这段,而对于初学者来说:你一定会问,为什么要使用Picasso来替换目前已有的图像加载方案。...或者了解一下其他图像加载类库,如Glide,ION等等 添加Picasso 希望截至目前为止,我们已经肯定你使用过一种类库来处理图像加载。如果你愿意尝试Picasso,这篇指导简直不能更适合你了。...2.5.2 从一个URL地址加载图片 Picasso使用了流式接口的调用方式,Picasso类是核心实现类。...如果要加载的图片不存在,Picasso将会返回错误的回调,关于这个,我们将稍后介绍。通过这三行代码示例,你可能已经相信Picasso是值得一试的,这只是其众多特性的冰山一角。

50520

Picasso,Glide,Fresco对比分析

前言 图片加载是Android开发中最最基础的功能,同时图片加载OOM也一直困扰着很多开发者,因此为了降低开发周期难度,我们经常会选用一些图片加载的开源库。...从时间上glide是有一定差距,不过fresco有张图片没加载完成,所以时间不是完全可靠的数据 从native heap可以看出Fresco最高545MB,这个有点恐怖,下面我们看个知识点。...详细属性对比 接下来只详细对比FrescoGlide Picasso从各方面都比这个弱,这里就不浪费时间了,如果想详细了解的可以看本人之前转载的一篇文章 http://blog.csdn.net...缓存图像大小 Glide则会根据ImageView控件尺寸获得对应的大小的bitmap来展示,从而缓存也可以针对不同的对象:原始图像(source),结果图像(result) 缓存原始图像 加载策略 Glide...而且Glide直接缓存相对大小的图片,节省空间的同时下场如果是同样大小的图片就不要再次请求,直接可以使用。 依赖 Glide ?

4.5K20
领券