Освой Android играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Любому коту требуется аватарка для переписки с кошками. Библиотека AvatarView позволяет настроить аватарку в желаемом стиле, можно выбрать цвет окантовки, индикатор, инициалы, разбить на секции. Люди тоже могут использовать библиотеку, но это нежелательно.
Домашняя страница: Гитхаб
Установим зависимость в Gradle.
implementation 'io.getstream:avatarview-coil:1.0.3'
Библиотека под капотом использует библиотеку Coil для загрузки картинок. Существует альтернативный вариант с использованием библиотеки Glide.
Создадим макет экрана.
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<io.getstream.avatarview.AvatarView
android:layout_width="110dp"
android:layout_height="110dp"
app:avatarViewBorderColor="@color/teal_700"
app:avatarViewBorderWidth="3dp"
app:avatarViewIndicatorBorderColor="@color/white"
app:avatarViewIndicatorBorderSizeCriteria="10"
app:avatarViewIndicatorColor="@color/purple_200"
app:avatarViewIndicatorEnabled="true"
app:avatarViewIndicatorPosition="bottomRight"
app:avatarViewIndicatorSizeCriteria="9"
app:avatarViewInitialsTextStyle="bold"
app:avatarViewShape="circle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Далее мы можем загрузить аватарку.
avatarView.loadImage(data)
В качестве данных могут выступать следующие варианты.
Загрузим изображение из разных источников.
val avatarView: AvatarView = findViewById(R.id.avatarView)
val uri = Uri.parse("http://developer.alexanderklimov.ru/android/images/android_cat.jpg") // URI
val data = "https://placekitten.com/200/300" // String
val drawableRes = R.drawable.threecats // Drawable
avatarView.loadImage(drawableRes) // используем ресурсы Drawable
В одну аватарку можно загрузить несколько изображений (до четырёх), надо только указать список.
val cats = listOf(
"https://placekitten.com/200/300",
"https://placekitten.com/g/200/300",
)
avatarView.loadImage(
data = cats
)
Картинка от разработчиков библиотеки.
Может ограничить число секций для изображений через XML.
app:avatarViewMaxSectionSize="4"
Цвет и толщина окантовки настраивается через атрибуты avatarViewBorderColor и avatarViewBorderWidth. Можно даже использовать массив цветов для окантовки через avatarViewIndicatorBorderColorArray.
По умолчанию используется круглая аватарка. Но можно установить и прямоугольную.
Индикаторы тоже настраиваются.
Доступны также настройки заглушки, заглушки для ошибок и инициалы. Смотрите документацию.