用Glide显示GIF文件(图片加载和caching库)
我尝试在图像视图中显示一个GIF图像作为加载占位符 – 使用Glide库 :
Glide.with(context) .load(ImageUrl()) .placeholder(R.drawable.loading2) .asGif() .crossFade() .into(image);
我试图展示这个文件
loading2.gif
但得到这个错误:
错误:(54,86)错误:无法find符号方法asGif()
我怎样才能显示GIF文件与glide在imageView?
上面的答案对我没有用。 下面的代码工作。
ImageView imageView = (ImageView) findViewById(R.id.imageView); GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView); Glide.with(this).load(R.raw.sample_gif).into(imageViewTarget);
对于Glide 3.0,你需要先设置asGif():
Glide.with(context) .load(imageUrl) .asGif() .placeholder(R.drawable.loading2) .crossFade() .into(imageView);
请记住,只要使用load()
将根据数据的types加载GIF或位图。 除非你想让你的载入失败,如果给定的url不是一个gif,你不需要指定asGif()
从Glide 4.0.0-RC0开始
ImageView imageView = (ImageView) findViewById(R.id.imageView); Glide.with(this).load(R.raw.image_gif).asGif().into(imageView);
我有这个相同的问题。 你可以通过移动asGif()
所在的asGif()
来解决它。 它必须直接.load()
之前。
所以改变:
Glide.with(context) .load(ImageUrl()) .placeholder(R.drawable.loading2) .asGif() ....
至
Glide.with(context) .asGif() .load(ImageUrl()) .placeholder(R.drawable.loading2) ....
尝试这个。 它为我工作,并会为您的代码也工作。它既适用于图像也适用于gif。
ImageView imageView = (ImageView) findViewById(R.id.test_image); GlideDrawableImageViewTarget imagePreview = new GlideDrawableImageViewTarget(imageView); Glide .with(this) .load(url) .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { return false; } }) .into(imagePreview); }
这个解决scheme是一种解决方法
<RelativeLayout android:layout_width="wrap_content" android:id="@+id/ImageContainer" android:background="#fff" android:layout_height="wrap_content"> <ImageView android:layout_width="wrap_content" android:id="@+id/loadingImageView" android:layout_centerInParent="true" android:layout_height="wrap_content"/> <ImageView android:id="@+id/mainImageView" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:layout_centerInParent="true" /> </RelativeLayout>
-
而不是使用一个,使用2 ImageViews
-
使用@Preetam给出的解决scheme在第一个ImageView中加载gif
ImageView loadingImageView = (ImageView) findViewById(R.id.loadingImageView); GlideDrawableImageViewTarget loadingImageViewTarget = new GlideDrawableImageViewTarget(loadingImageView); Glide.with(this).load(R.raw.spinner).into(loadingImageViewTarget);
-
在第二个ImageView中加载来自networking的图像(如果您不希望在加载networking图像时隐藏加载gif,则加载图像顺序非常重要)
ImageView mainImageView = (ImageView) findViewById(R.id.mainImageView ); GlideDrawableImageViewTarget mainImageViewTarget = new GlideDrawableImageViewTarget(mainImageView); Glide.with(this).load(imageUrl).into(mainImageViewTarget);
这是最好的方法
Glide.with(a).load(item[position]) .thumbnail(Glide.with(a).load(R.drawable.preloader)) .fitCenter() .crossFade() .into(imageView);
Glide.with(this) .load(R.drawable.logo) .asGif() .placeholder(R.drawable.logo) .into(imageView);