Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Библиотека AvatarView: Аватарка для кота

Любому коту требуется аватарка для переписки с кошками. Библиотека 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)

В качестве данных могут выступать следующие варианты.

  • String
  • URI
  • HttpUrl
  • File
  • DrawableRes
  • Drawable
  • Bitmap

Загрузим изображение из разных источников.


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

AvatarView

В одну аватарку можно загрузить несколько изображений (до четырёх), надо только указать список.


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.

По умолчанию используется круглая аватарка. Но можно установить и прямоугольную.

Индикаторы тоже настраиваются.

Доступны также настройки заглушки, заглушки для ошибок и инициалы. Смотрите документацию.

Реклама