web-dev-qa-db-ja.com

Glideを使用してImageViewに画像を合わせる方法

私の懸念は、Android:scaleType="fitXY"を使用して画像をGlideを使用して画像に合わせる方法です。

私のImageView

<ImageView
    Android:id="@+id/img_pager"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_centerInParent="true"
    Android:scaleType="fitXY" />

Glideを使用して画像を読み込みます

Glide.with(context).load(url).placeholder(R.drawable.default_image).into(img);

しかし、画像はImageViewに収まりません。画面に示されているように、画像の両側にスペースが表示されますfitXY

enter image description here

32
N J

centerCrop()またはfitCenter()メソッドを使用できます。

Glide.with(context)
     .load(url)
     .centerCrop()
     .placeholder(R.drawable.default_image)
     .into(img)

または

Glide.with(context)
     .load(url)
     .fitCenter()
     .placeholder(R.drawable.default_image)
     .into(img)

詳細については、次のURLをご覧ください。 https://futurestud.io/tutorials/glide-image-resizing-scaling

46
ArtKorchagin

Glide v4では、次のようにRequestOptionsオブジェクトを作成する必要があります:

RequestOptions options = new RequestOptions();
options.centerCrop();

Glide.with(fragment)
    .load(url)
    .apply(options)
    .into(imageView);

詳細

68
OriolJ

.centerCrop()または.fitCenter()を使用します

別の方法は、カスタムTransformationを使用することです

6
Empty2k12
<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);
5

GlideのGlide v4 GlideAppインスタンスを使用する場合:

GlideApp.with(view.getContext())
        .load(url)
        .centerCrop()
        .into(view);

データバインディングを使用する場合:

@BindingAdapter("glideCropCenter")
public static void setProgress(ImageView view, string url) {
    GlideApp.with(view.getContext())
            .load(url)
            .centerCrop()
            .into(view);
}

Xmlで:

       <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        app:glideCropCenter="@{viewModel.url}" />
0
Ahmad Aghazadeh