Pertanyaan Meluncur masalah tikungan bulat bulat


Saya menggunakan kode berikut untuk memuat gambar dengan sudut membulat ke dalam imageview menggunakan meluncur:

Glide.with(this)
                .load(url)
                .listener(new RequestListener<Drawable>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                        return false;
                    }
                    @Override
                    public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                        return false;
                    }
                })
                .transition(withCrossFade())
                .apply(new RequestOptions().transform(new RoundedCorners(50)).error(R.drawable.default_person).skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE))
                .into(mBinding.profileImgv);

enter image description here gambar dipolarisasi karena beberapa alasan. Bisakah seseorang memberitahuku di mana masalahnya?


3
2017-07-19 09:19


asal


Jawaban:


Saya memiliki masalah yang sama, masalah dalam kasus saya adalah gambar yang saya coba muat memiliki ukuran kurang dalam piksel (320x480), maka ukuran ImageView dalam piksel. Solusi saya adalah sebagai berikut:

ImageView saya di file xml:

    <ImageView
    android:id="@+id/image_program_thumb"
    android:layout_width="match_parent"
    android:layout_height="186dp" />

Kelas ProgramViewHolder.java

@BindView(R.id.image_program_thumb) ImageView mProgramThumbnail;
.....
void bindData(final Program item) {
    RequestOptions requestOptions = new RequestOptions();
    requestOptions = requestOptions.transforms(new CenterCrop(), new RoundedCorners(16));
    Glide.with(itemView.getContext())
            .load(item.getImage())
            .apply(requestOptions)
            .into(mProgramThumbnail);
....

}

P.S. Saya menggunakan versi 4.2.0 Glide


22
2017-10-10 09:41



Glide.with(context).load(url).centerCrop().into(new BitmapImageViewTarget(imageView) {
        @Override
        protected void setResource(Bitmap resource) {
            RoundedBitmapDrawable circularBitmapDrawable =
                    RoundedBitmapDrawableFactory.create(context.getResources(), resource);
            circularBitmapDrawable.setCircular(true);
            imageView.setImageDrawable(circularBitmapDrawable);
        }
    });

0
2017-07-19 09:26



Ada perubahan dalam jawaban Sir Codesalot

Daripada melakukan ini

GlideApp.with(this)
            .load(imageUrl)
            .roundedCorners(getApplicationContext(), 5)
            .into(imageView);

Melakukan hal ini

Glide.with(holder.ivBook.context)
            .load(timeline.bookImageUrl)
            .apply(MyGlideExtension.roundCorners(new RequestOptions, holder.ivBook.context, 10))
            .into(holder.ivBook)

`


0
2018-06-12 19:38



Seperti yang Anda lihat dalam jawaban saya sini, itu juga bisa dicapai dengan menggunakan API Generasi Glid. Dibutuhkan beberapa pekerjaan awal tetapi kemudian memberi Anda semua kekuatan Glide dengan fleksibilitas untuk melakukan apa pun karena Anda menggeliat kode yang sebenarnya jadi saya pikir itu solusi yang baik untuk jangka panjang. Plus, penggunaannya sangat sederhana dan rapi.

Pertama, setup Meluncur versi 4+:

implementation 'com.github.bumptech.glide:glide:4.6.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.6.1'

Kemudian buat kelas modul aplikasi Glid untuk memicu pemrosesan anotasi:

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {}

Kemudian buat ekstensi Glide yang benar-benar berfungsi. Anda dapat menyesuaikannya untuk melakukan apa pun yang Anda inginkan:

@GlideExtension
public class MyGlideExtension {

private MyGlideExtension() {}

    @NonNull
    @GlideOption
    public static RequestOptions roundedCorners(RequestOptionsoptions, @NonNull Context context, int cornerRadius) {
        int px = Math.round(cornerRadius * (context.getResources().getDisplayMetrics().xdpi / DisplayMetrics.DENSITY_DEFAULT));
        return options.transforms(new RoundedCorners(px));
    }
}

Setelah menambahkan file-file ini, buat proyek Anda.

Kemudian gunakan dalam kode Anda seperti ini:

GlideApp.with(this)
                .load(imageUrl)
                .roundedCorners(getApplicationContext(), 5)
                .into(imageView);

-1
2018-03-06 08:41