Android 使用滑动显示多个图像
我想使用glide将一个图像显示为两个不同的图像视图。我知道我可以简单地使用下面的代码来完成Android 使用滑动显示多个图像,android,android-glide,Android,Android Glide,我想使用glide将一个图像显示为两个不同的图像视图。我知道我可以简单地使用下面的代码来完成 ImageView imageView = findViewById(R.id.header_image); Glide.with(this).load(R.drawable.header_image).into(imageView); ImageView imageView2 = findViewById(R.id.header_image); Glide.with(this).load(R.draw
ImageView imageView = findViewById(R.id.header_image);
Glide.with(this).load(R.drawable.header_image).into(imageView);
ImageView imageView2 = findViewById(R.id.header_image);
Glide.with(this).load(R.drawable.header_image).into(imageView2);
但是它需要将同一个图像加载两次到内存中,由于内存问题,我不希望这样。我希望加载一次图像并将其显示到两个图像视图中。我可以做些什么来实现它?尝试这种方法
setImage(R.drawable.header_image,imageView ,imageView2 );
void setImage(int image, ImageView... imageView) {
for (ImageView imageView : imageView) {
if (imageView != null) {
Glide.with(this).load(image).into(imageView);
}
}
}
在使用glide时,您无需担心内存问题,因为glide有自己的缓存系统来优化内存。请阅读以下内容 Glide提供了许多选项,允许您选择加载如何在每个请求的基础上与Glide的缓存交互 磁盘缓存策略 DiskCacheStrategy可以与DiskCacheStrategy方法一起应用于单个请求。可用的策略允许您防止加载使用或写入磁盘缓存,或选择仅缓存支持加载的未修改原始数据、仅缓存加载生成的已转换缩略图,或两者兼而有之 默认策略“自动”尝试对本地和远程映像使用最佳策略。当您加载远程数据(如URL)时,AUTOMATIC将只存储支持您加载的未修改数据,因为下载远程数据比调整磁盘上已有数据的大小要昂贵。对于本地数据,AUTOMATIC将仅存储转换后的缩略图,因为如果需要生成第二个缩略图大小或类型,则检索原始数据的成本很低 要应用
磁盘缓存策略
:
GlideApp.with(fragment)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
仅从缓存加载
在某些情况下,如果映像尚未在缓存中,您可能希望加载失败。为此,可以基于每个请求使用onlyRetrieveFromCache方法:
GlideApp.with(fragment)
.load(url)
.onlyRetrieveFromCache(true)
.into(imageView);
如果在内存缓存或磁盘缓存中找到映像,则将加载该映像。否则,如果此选项设置为true,则加载将失败
如果您使用的是最新版本的Glide
,则创建RequestOptions
like
使用RequestOptions加载具有设置属性的图像
您可以使用以下代码一次加载图像并在多个ImageView中显示它
Glide.with(this)
.asBitmap()
.load(R.drawable.header_image)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
imageview.setImageBitmap(resource);
imageview2.setImageBitmap(resource);
}
});
Glide.with(这个)
.asBitmap()
.load(右可绘制标题\u图像)
.into(新的SimpleTarget(){
@凌驾
public void onResourceReady(@NonNull Bitmap resource,@null Transition或可能以这种方式
RequestBuilder=Glide.with(this.load)(drawableResId);
builder.into(imageView0)
builder.into(imageView1)
请参阅本文档。这可能有助于您在使用glide时不必担心内存问题,因为glide有自己的缓存系统来优化内存。请阅读本文档的精彩解释!尤其是英文版。
Glide.with(context)
.load(url)
.apply(simpleOptions)
.into(imageView);
Glide.with(this)
.asBitmap()
.load(R.drawable.header_image)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
imageview.setImageBitmap(resource);
imageview2.setImageBitmap(resource);
}
});