J'ai beaucoup de doutes sur le traitement des images dans Android et j'espérais voir si vous pouviez les résoudre.
À ce stade, j'ai une image qui occupe 320 dp de haut et une largeur de match_parent, ce qui correspond à environ 60% de l'écran . Cette image de la charge avec Glide, de certaines images en 1080 que j'ai personnellement.
J'ai essayé de faire centroCrop et fitXY, mais toujours déformer les images. Le premier type que je connais coupe l’image, mais le second correspond à une taille, mais il déforme l’image en hauteur ou en largeur.
Est-il possible de l'insérer avec Glide et de le voir tel qu'il est? .__ Quelles propriétés dois-je toucher sur ImageView et quelles propriétés de Glide?
<ImageView
Android:id="@+id/img"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:nestedScrollingEnabled="false"
app:layout_collapseMode="parallax"
Android:scaleType="fitXY"
app:layout_scrollFlags="scroll|enterAlways" />
Merci d'avance.
Override
doit être accessible via RequestOptions
dans la version la plus récente de Glide 4.x
Vous pouvez ajouter RequestOptions
à apply()
Glide
.with(context)
.load(path)
.apply(new RequestOptions().override(600, 200))
.into(imageViewResizeCenterCrop);
dans glide 4.x, 'override' est dans 'apply'
Glide.with(getBaseContext())
.load(path)
.apply(RequestOptions.placeholderOf(R.mipmap.no_wifi)
.error(R.mipmap.no_wifi)
.override(500,500))
.into(mImageView);
Glide
.with(context)
.load(path)
.override(600, 200)
.centerCrop()
.into(imageViewResizeCenterCrop);
@Raghunandan a raison. Vous devriez essayer de transformer à votre façon.
Glide 4.x - Si vous voulez obtenir du bitmap, essayez:
Glide.with(mContext).asBitmap().
load(pictureUri)
.apply(new RequestOptions().override(50, 50))
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
// resource is your loaded Bitmap
imgView.setImageBitmap(resource);
return true;
}
}).submit();
vous devez faire ce qui suit avec votre imageview:
<ImageView
Android:id="@+id/img"
Android:layout_width="match_parent"
Android:layout_height="200dp"
Android:scaleType="fitCenter" />
et ceci avec votre glisse:
Glide.with(getBaseContext())
.load(path)
//.placeholder(R.drawable.drawable)
.error(R.drawable.noimg)
.animate(R.anim.animation_fade_in)
.into(mImageView);
Cela fonctionne parfaitement avec moi.
Si vous voulez charger une image sans utiliser le glissement, vous pouvez utiliser scaleType "fitCenter" ou "centerInside" comme suit -
<ImageView
Android:id="@+id/img"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:nestedScrollingEnabled="false"
app:layout_collapseMode="parallax"
Android:scaleType="centerInside"
app:layout_scrollFlags="scroll|enterAlways" />
Avec Glide, vous pouvez utiliser le remplacement (w, h). Lorsque vous utilisez la substitution (w, h), glide génère un nouveau bitmap avec la largeur et la hauteur mentionnées dans la substitution (w, h), puis chargez l'image dans ImageView. Vous pouvez utiliser fitCenter () pour aligner l'image. Vous pouvez également utiliser diskCacheStrategy (). Si vous ne l'utilisez pas, Glide n'attrapera que les bitmap nouvellement générés. Si vous souhaitez également récupérer l'image d'origine, utilisez diskCacheStrategy (DiskCacheStrategy.ALL).
Glide.with(context)
.load(image_path)
.override(800, 400)
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView)
J'espère que ça aide.