que - implementar glide android studio
Mostrar archivo GIF con Glide(biblioteca de carga y almacenamiento en caché de imágenes) (12)
Intento mostrar una imagen GIF como marcador de posición de carga en la vista de imagen, con Glide Library :
Glide.with(context)
.load(ImageUrl())
.placeholder(R.drawable.loading2)
.asGif()
.crossFade()
.into(image);
Intento mostrar este archivo
loading2.gif
pero obtén este error:
Error: (54, 86) error: no se puede encontrar el método de símbolo asGif ()
¿Cómo puedo mostrar un archivo GIF con Glide en una imageView?
Aquí está la mejor manera
Glide.with(a).load(item[position])
.thumbnail(Glide.with(a).load(R.drawable.preloader))
.fitCenter()
.crossFade()
.into(imageView);
Aquí hay otro ejemplo. He observado que Glide no juega Gif automáticamente a veces. Esta solución funcionó para mí:
En el ejemplo,
imageView
es uno de los miembros de la clase ViewHolder de RecyclerView.
Glide.with(itemView.getContext())
.asGif()
.load(thumbPath)
.placeholder(ResourcesCompat.getDrawable(context.getResources(),
R.drawable.image_loading_placeholder, null))
.centerCrop()
.into(new ImageViewTarget<GifDrawable>(imageView) {
@Override
protected void setResource(@Nullable GifDrawable resource) {
imageView.setImageDrawable(resource);
}
});
El método .asGif () debe usarse antes o no se reconocerá
Desde Glide versión v4:
Dependencia:
implementation ''com.github.bumptech.glide:glide:4.8.0''
annotationProcessor ''com.github.bumptech.glide:compiler:4.8.0''
Visita este enlace Para crear la clase GlideApp :
Puede proporcionar directamente una referencia
GlideApp
en
GlideApp
GlideApp.with(this).load(R.drawable.ic_loader).into(mBinding.progressBar);
Si obtiene algún error, hágamelo saber.
Esta solución es un tipo de solución
<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>
-
en lugar de usar uno, use 2 ImageViews
-
Ponga cargando gif en primer ImageView usando la solución dada por @Preetam
ImageView loadingImageView = (ImageView) findViewById(R.id.loadingImageView); GlideDrawableImageViewTarget loadingImageViewTarget = new GlideDrawableImageViewTarget(loadingImageView); Glide.with(this).load(R.raw.spinner).into(loadingImageViewTarget);
-
Cargue la imagen de la red en el segundo ImageView (el orden es importante si no desea ocultar el gif de carga una vez que se carga la imagen de la red)
ImageView mainImageView = (ImageView) findViewById(R.id.mainImageView); GlideDrawableImageViewTarget mainImageViewTarget = new GlideDrawableImageViewTarget(mainImageView); Glide.with(this).load(imageUrl).into(mainImageViewTarget);
La respuesta anterior no funcionó para mí. El siguiente código funciona.
ImageView imageView = (ImageView) findViewById(R.id.imageView);
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
Glide.with(this).load(R.raw.sample_gif).into(imageViewTarget);
Para Glide 3.0, debe establecer asGif () anteriormente:
Glide.with(context)
.load(imageUrl)
.asGif()
.placeholder(R.drawable.loading2)
.crossFade()
.into(imageView);
Tenga en cuenta que solo usando
load()
se cargará un GIF o un mapa de bits según el tipo de datos.
A menos que desee que su carga falle si la url dada no es un gif, no necesita especificar
asGif()
Para Glide 4. +
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Glide.with(this).asGif().load(R.raw.image_gif).into(imageView);
Prueba esto. Funcionó para mí y también funcionará para su código. Funciona tanto para imágenes como para gifs.
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);
}
Utilice GlideDrawableImageViewTarget. Este código me funciona.
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
Glide.with(this).load(R.drawable.logo_gif).into(imageViewTarget);
Yo tuve el mísmo problema.
Puede resolverlo moviéndose donde se encuentra el
asGif()
.
Debe venir directamente antes de
.load()
.
Entonces cambia:
Glide.with(context)
.load(ImageUrl())
.placeholder(R.drawable.loading2)
.asGif()
....
a
Glide.with(context)
.asGif()
.load(ImageUrl())
.placeholder(R.drawable.loading2)
....
Glide reproduce automáticamente archivos GIF animados, sin necesidad de un método adicional
Use el siguiente código
Glide.with(this)
.load(R.drawable.logo)
.into(imageView);
Instead of GlideDrawableImageViewTarget use DrawableImageViewTarget
ImageView imageView =findViewById(R.id.imageView);
DrawableImageViewTarget imageViewTarget = new DrawableImageViewTarget (imageView);
Glide.with(this).load(R.raw.image_loader).into(imageViewTarget);
library: implementation ''com.github.bumptech.glide:glide:4.8.0''
annotationProcessor ''com.github.bumptech.glide:compiler:4.8.0''