Сделайте квадратное изображение в Glide и затем закройте его - PullRequest
0 голосов
/ 14 ноября 2018

Я решаю типичную задачу для изображения: попробуйте centerCrop() сделать его и сделать круговое изображение, как в Как округлить изображение с помощью библиотеки Glide? , но результат выглядит как Получается скользящее круговое изображениеобрезанное или enter image description here

(не круговое).

Я думаю, что Glide (v.4) неправильно обрезает изображение.Я перепробовал много вариантов, таких как GlideApp.with(photo).load(url).circleCrop().into(photo).Вероятно, лучше было бы сначала создать квадрат из прямоугольника, а затем сделать его круглым.

Это часть XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >

    <ImageView
        android:id="@+id/photo"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginStart="15dp"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="20dp"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:src="@drawable/image_1"
        />

    <TextView
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="7dp"
        android:layout_marginLeft="7dp"
        android:lineSpacingExtra="1sp"
        android:textColor="@color/black"
        android:textSize="20sp"
        app:layout_constraintEnd_toStartOf="parent"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintStart_toEndOf="@+id/photo"
        app:layout_constraintTop_toTopOf="@+id/photo"
        tools:text="Name"
        />

</android.support.constraint.ConstraintLayout>

ОБНОВЛЕНИЕ

Извините, нопроблема была в исходном изображении.Я не думал, что это было (строки добавлены):

enter image description here

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Вы можете попробовать этот способ XML после съемки

   <de.hdodenhof.circleimageview.CircleImageView
   xmlns:app="http://schemas.android.com/apk/res-auto"
   />

    dependencies {
    ...
    implementation 'de.hdodenhof:circleimageview:2.2.0'}
0 голосов
/ 14 ноября 2018

Пожалуйста, проверьте ниже ответ:

Попробуйте и дайте мне знать, если какой-либо вопрос относительно этого.

private RequestOptions circleOptions = new RequestOptions()
            .centerCrop()
            .circleCrop()      // responsible for circle crop
            .placeholder(R.color.color_gray)    // replace with your placeholder image or remove if don't want to set
            .error(R.color.color_gray)     // replace with your placeholder image or remove if don't want to set
            .diskCacheStrategy(DiskCacheStrategy.RESOURCE);

public void loadImageCircle(String url, ImageView view) {
        Glide.with(context)
                .load(url)
                .apply(circleOptions)
                .into(view);
    }

Вызовите метод как:

loadImageCircle(imafgeURL,imageView);
0 голосов
/ 14 ноября 2018

Использование RequestOptions.circleCropTransform()

Примерно так:

    Glide.with(this).load(url)
            .apply(RequestOptions.circleCropTransform())
            .into((ImageView) photo);

Плюс, убедитесь, что ImageView является квадратом.Если вы используете ConstraintLayout, используйте app:layout_constraintDimensionRatio="1:1"

Doc: https://bumptech.github.io/glide/javadocs/400/com/bumptech/glide/request/RequestOptions.html

...