Quiero usar la biblioteca de Android Glide para descargar una imagen y mostrarla ImageView
.
En la versión anterior usamos:
Glide.with(mContext).load(imgUrl)
.thumbnail(0.5f)
.placeholder(R.drawable.PLACEHOLDER_IMAGE_NAME)
.error(R.drawable.ERROR_IMAGE_NAME)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
Pero he visto la documentación de Glide:
dice usar
GlideApp.with()
en su lugarGlide.with()
Mi preocupación es un marcador de posición que falta, un error, GlideApp y otras opciones.
estoy usando
compile 'com.github.bumptech.glide:glide:4.0.0'
¿Dónde estoy haciendo mal? Con referencia a aquí .
¿Cómo se GlideApp.with()
ha utilizado?
La API se genera en el mismo paquete que AppGlideModule
y se denomina GlideApp
de forma predeterminada. Las aplicaciones pueden usar la API iniciando todas las cargas con en GlideApp.with()
lugar de Glide.with()
:
GlideApp.with(fragment)
.load(myUrl)
.placeholder(placeholder)
.fitCenter()
.into(imageView);
android
android-layout
android-glide
Ritesh Bhavsar
fuente
fuente
Respuestas:
Intente usar RequestOptions :
RequestOptions requestOptions = new RequestOptions(); requestOptions.placeholder(R.drawable.ic_placeholder); requestOptions.error(R.drawable.ic_error); Glide.with(context) .setDefaultRequestOptions(requestOptions) .load(url).into(holder.imageView);
EDITAR
Si
.setDefaultRequestOptions(requestOptions)
no funciona, use.apply(requestOptions)
:Glide.with(MainActivity.this) .load(url) .apply(requestOptions) .into(imageview); // or this Glide.with(MainActivity.this) .load(url) .apply(new RequestOptions().placeholder(R.drawable.booked_circle).error(R.drawable.booked_circle)) .into(imageview); // or this Glide.with(MainActivity.this) .load(url) .apply(RequestOptions.placeholderOf(R.drawable.booked_circle).error(R.drawable.)) .into(imageview);
EDITAR 2 Bono
Aquí hay algunos otros cambios en Glide-4
requestOptions.circleCropTransform();
Cross fades()
GlideDrawableImageViewTarget
en Glide-4GifDrawable
como parámetro de destinofuente
RequestOptions requestOptions = new RequestOptions().placeholder(R.drawable.ic_placeholder).requestOptions.error(R.drawable.ic_error);
Si usa las dependencias del paquete Glide
compile 'com.github.bumptech.glide:glide:3.7.0'
, entonces debe usar el siguiente código:GlideApp .with(your context) .load(url) .centerCrop() .placeholder(R.drawable.loading_image) .error(R.drawable.error_image) .into(myImageView);
La última versión actualizada que
compile com.github.bumptech.glide:glide:4.1.1
debe usar debe ser usar el siguiente código:RequestOptions options = new RequestOptions() .centerCrop() .placeholder(R.drawable.default_avatar) .error(R.drawable.default_avatar) .diskCacheStrategy(DiskCacheStrategy.ALL) .priority(Priority.HIGH) .dontAnimate() .dontTransform(); Glide.with(this) .load(url) .apply(options) .into(imageView);
Vea la última versión de deslizamiento, corrección de errores y funciones .
fuente
Si desea utilizar GlideApp, debe agregarlo al
dependencies
procesador de anotaciones como en la captura de pantalla:Luego, incluya una implementación de AppGlideModule en su aplicación:
@GlideModule public final class MyAppGlideModule extends AppGlideModule {}
No te olvides de la
@GlideModule
anotación. Entonces necesitas construir el proyecto. YGlideApp
se generará automáticamente.fuente
Dependencias:
compile 'com.github.bumptech.glide:glide:4.1.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'
Agregue una implementación de AppGlideModule debidamente anotada:
import com.bumptech.glide.annotation.GlideModule; import com.bumptech.glide.module.AppGlideModule; @GlideModule public final class MyAppGlideModule extends AppGlideModule{}
Además, si ha utilizado la opción jack, para evitar los siguientes errores similares, debe utilizar la vista previa de Android Studio 3.0.0.
fuente
No tenemos necesidad de usar RequestOptions también.
La API generada agrega una clase GlideApp, que proporciona acceso a las subclases RequestBuilder y RequestOptions. La subclase RequestOptions contiene todos los métodos en RequestOptions y cualquier método definido en GlideExtensions. La subclase RequestBuilder proporciona acceso a todos los métodos en la subclase RequestOptions generada sin tener que usar apply:
Usar Glide : -
Una solicitud sin la API generada podría verse así:
Glide.with(fragment) .load(url) .apply(centerCropTransform() .placeholder(R.drawable.placeholder) .error(R.drawable.error) .priority(Priority.HIGH)) .into(imageView);
Usando GlideApp : -
Con la API generada, las
RequestOptions
llamadas se pueden insertar:GlideApp.with(fragment) .load(url) .centerCrop() .placeholder(R.drawable.placeholder) .error(R.drawable.error) .priority(Priority.HIGH) .into(imageView);
Aún puede usar la subclase RequestOptions generada para aplicar el mismo conjunto de opciones a múltiples cargas, pero la subclase RequestBuilder generada puede ser más conveniente en la mayoría de los casos.
fuente
Trabajando
Glide.with(context!!) .load(user.profileImage) .apply (RequestOptions.placeholderOf(R.drawable.dummy_user)) .into(edit_profile_image)
fuente
Si desea utilizar un marcador de posición común en todas partes de su aplicación, puede hacerlo de esta manera:
Como estamos creando GlideModule desde Glide v4 , puede copiar / pegar esta clase en su proyecto para que pueda usar la clase GlideApp (para más pasos, siga esto) :
@GlideModule public class SampleGlideModule extends AppGlideModule { @Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { super.applyOptions(context, builder); builder.setDefaultRequestOptions(new RequestOptions().placeholder(R.drawable.logo).error(R.drawable.logo)); } @Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { super.registerComponents(context, glide, registry); } }
Puede dar todas las opciones de solicitud aquí para establecerlas como predeterminadas .
Mediante la creación de esta clase que no es necesario utilizar
.placeholder
conGlideApp
, que se aplicará automáticamente.fuente
RequestOptions options = new RequestOptions() .placeholder(R.drawable.null_image_profile) .error(R.drawable.null_image_profile); //.centerCrop() //.diskCacheStrategy(DiskCacheStrategy.ALL) //.priority(Priority.HIGH); Glide.with(context).load(imageUrl) .apply(options) .into(profileImage);
fuente