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

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

Шкодим

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

ProgressIndicator/CircularProgressIndicator

Обновлено 23 февраля 2021

Новый компонент является наследником ProgressBar. Новое название лучше старого, так как там есть кот! (ProgressIndicator).

Прописываем зависимости.


implementation("com.google.android.material:material:1.3.0")

Добавляем компонент на экран. Есть два типа индикатора - круговой и линейный.

LinearProgressIndicator

<com.google.android.material.progressindicator.LinearProgressIndicator
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="true" />

В примере использовался атрибут android:indeterminate="true" для создания бесконечной анимации. Если вам нужен индикатор с заданным поведением, то уберите этот атрибут.

По умолчанию используется тип анимации app:indeterminateAnimationType="disjoint", который можно опустить. Изменим значение атрибута на contiguous, чтобы получить несколько цветных полос. При этом надо указать три нужных цвета.

Можно программно переключиться с режима бесконечной анимации на режим заданных значений. Код инициализации компонента опущен для краткости.


val progress = 4
indicator.setProgressCompat(progress, true)

Возможно и обратное переключение через свойство indicator.isIndeterminate - true или false.

Можно задать закруглённые уголки через атрибут app:trackCornerRadius или через метод setTrackCornerRadius() или через свойство trackCornerRadius.

CircularProgressIndicator

Аналогично поступаем с круговым индикатором. Создадим компонент с бесконечной анимацией.


<com.google.android.material.progressindicator.CircularProgressIndicator
    android:id="@+id/circularProgressIndicator"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminate="true" />

Можно использовать атрибут app:indicatorSize для установки размера.

В остальном к компоненту применимы все примеры из первой части статьи.

ProgressIndicator
Реклама