Размещение 4 миниатюр в групповом чате с помощью ConstraintLayout - PullRequest
1 голос
/ 23 апреля 2019

У меня есть приложение для обмена сообщениями, которое также имеет функцию группового чата.Я сталкиваюсь с этой проблемой при создании чата для группового чата.Простой эскиз чата 1: 1 будет аватаркой второго человека.(Вы бы проигнорировали текущего пользователя)

enter image description here

Сложность возникает, когда вы делаете эскиз для группового чата.Так что у меня есть это руководство по дизайну.

Если этот групповой чат состоит из 3 человек, включая текущего пользователя, то я должен показать объединенные изображения других 2 в качестве эскиза группового чата.

enter image description here

Если этот групповой чат состоит из 4 человек, включая текущего пользователя, то я должен показать объединенные изображения других 3 в качестве эскиза группового чата,

enter image description here

Если этот групповой чат состоит из более чем 4 человек, включая пользователей, то я должен показать объединенные изображения только 4 участников в качестве эскизагруппового чата.

enter image description here

Мой подход к решению.

Очевидное решение - просто иметь 4 разных представления и использовать тесогласно количеству людей в группе.Это работает, но не осуществимо.У меня должен быть один отзывчивый вид, который отвечает всем требованиям.

Поэтому я подумал об использовании ConstraintLayout.Я добился такого большого прогресса.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintDimensionRatio="1:1">
        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:id="@+id/fl_thumb_1"
            android:background="@color/colorRed"
            app:layout_constraintBottom_toTopOf="@id/fl_thumb_2"
            app:layout_constraintRight_toLeftOf="@id/fl_thumb_4"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintDimensionRatio="1:1">
        </FrameLayout>

        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:id="@+id/fl_thumb_2"
            android:background="@color/colorBlue"
            app:layout_constraintTop_toBottomOf="@id/fl_thumb_1"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintDimensionRatio="1:1">
        </FrameLayout>

        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:id="@+id/fl_thumb_3"
            android:background="@color/colorBlackSecond"
            app:layout_constraintTop_toBottomOf="@id/fl_thumb_1"
            app:layout_constraintRight_toLeftOf="@id/fl_thumb_2"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintDimensionRatio="1:1">
        </FrameLayout>

        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:id="@+id/fl_thumb_4"
            android:background="@color/colorGrey"
            app:layout_constraintLeft_toRightOf="@id/fl_thumb_1"
            app:layout_constraintBottom_toTopOf="@id/fl_thumb_2"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintDimensionRatio="1:1">
        </FrameLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

Меня беспокоит не округлость или перекрывающиеся представления.Пока я не могу разместить миниатюры.

Так что выше есть 4 FrameLayout с, что вы можете сделать из миниатюр.Я дал ограничения для каждой структуры кадра, и в текущем состоянии у нее будет 4 миниатюры, и я думал о настройке видимости структуры кадра в GONE в соответствии с количеством людей в группе.Но как-то не получается то, что мне точно нужно.

Для справки Kakao Talk использует этот дизайн.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...