Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用滑动显示多个图像_Android_Android Glide - Fatal编程技术网

Android 使用滑动显示多个图像

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

我想使用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.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);
        }
    });