Mon souci est de savoir comment adapter l'image en utilisant Android:scaleType="fitXY"
dans l'image en utilisant Glide .
Mon ImageView
est
<ImageView
Android:id="@+id/img_pager"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:scaleType="fitXY" />
Charge l'image en utilisant Glide comme ceci
Glide.with(context).load(url).placeholder(R.drawable.default_image).into(img);
mais l'image ne se met pas en forme dans ImageView
il montre un espace sur l'image de chaque côté, comme le montre l'écran, j'en ai besoin fitXY
Vous pouvez utiliser les méthodes centerCrop()
ou fitCenter()
:
Glide.with(context)
.load(url)
.centerCrop()
.placeholder(R.drawable.default_image)
.into(img)
ou
Glide.with(context)
.load(url)
.fitCenter()
.placeholder(R.drawable.default_image)
.into(img)
Vous pouvez également trouver plus d'informations sur: https://futurestud.io/tutorials/glide-image-resizing-scaling
Sur Glide v4, vous devez créer un objet RequestOptions, comme ceci:
RequestOptions options = new RequestOptions();
options.centerCrop();
Glide.with(fragment)
.load(url)
.apply(options)
.into(imageView);
Vous utiliseriez .centerCrop()
ou .fitCenter()
Une autre façon de le faire est avec un personnalisé Transformation
<Android.support.v7.widget.AppCompatImageView
Android:id="@+id/ivPhoto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:adjustViewBounds="true"
Android:scaleType="fitXY" />
.....................................
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
AppCompatImageView ivPhoto = findViewById(R.id.ivPhoto);
Glide.with(this)
.load("https://www.gettyimages.ca/gi-resources/images/Homepage/Hero/UK/CMS_Creative_164657191_Kingfisher.jpg")
.apply(new RequestOptions()
.placeholder(R.drawable.place_holder_gallery)
.error(R.drawable.ic_no_image)
)
.into(ivPhoto);
Si vous utilisez l’instance Glide v4 GlideApp de Glide:
GlideApp.with(view.getContext())
.load(url)
.centerCrop()
.into(view);
Si vous utilisez la liaison de données:
@BindingAdapter("glideCropCenter")
public static void setProgress(ImageView view, string url) {
GlideApp.with(view.getContext())
.load(url)
.centerCrop()
.into(view);
}
En XML:
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
app:glideCropCenter="@{viewModel.url}" />