Android 如何在其他活动中重用已下载的映像?
我已经使用Glide library下载了一个图像,但我想在另一个活动中重用该图像,而无需再次下载。怎么做 我曾尝试使用Android 如何在其他活动中重用已下载的映像?,android,android-intent,android-glide,Android,Android Intent,Android Glide,我已经使用Glide library下载了一个图像,但我想在另一个活动中重用该图像,而无需再次下载。怎么做 我曾尝试使用.diskCacheStrategy(diskCacheStrategy.ALL),但我不知道下一步该怎么做 Glide.with(activityContext) .load(posterURL) .into(holder.poster); 我希望我可以将它作为一个额外的数据以图像而不是URL的形式传递给int
.diskCacheStrategy(diskCacheStrategy.ALL)
,但我不知道下一步该怎么做
Glide.with(activityContext)
.load(posterURL)
.into(holder.poster);
我希望我可以将它作为一个额外的数据以图像而不是URL的形式传递给intent,您可以通过多种方式来实现这一点 1) 在其他活动中使用相同的URL,无论您想在何处使用Glide加载图像,就像您当前所做的那样 2) 您可以从Glid获取位图,并可以写入目录并保存路径。并在其他活动中使用相同的文件路径解码图像 要通过滑动获取位图,请使用以下代码
Glide.with(mContext)
.asBitmap()
.load("url")
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
//resource is the bitmap you can use
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
要检索图像,请使用下面的代码
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
重要的一点是位图实现了Parcelable,因此可以毫无顾虑地传递它。如果使用
.diskCacheStrategy(diskCacheStrategy.ALL)
它将只在第一次下载它。
第二次加载图像并使用相同的URL
时,它将从缓存中获取图像
因此,只需将URL
传递给另一个活动
,并使用相同的Glide
code即可将posterURL转换为String
并传递给另一个活动。然后从receiver类,您可以将其转换回URI
。这个想法是,在将图像转换为URI后,我必须再次下载该图像,这是我不想做的事情-@JohnJoeNo,您不需要再次下载它。您只是从Sender类收到它。好的,我知道了,但是在这种情况下,.diskCacheStrategy(diskCacheStrategy.ALL)
不会被使用,对吗@JohnJoePass位图是一种糟糕的做法。如果位图很大怎么办?是的,你是对的。。。但至少有一种方法可以做到:)非常感谢,这正是我想要的:)