Освой Android играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Обновлено 23 февраля 2021
Новый компонент является наследником ProgressBar. Новое название лучше старого, так как там есть кот! (ProgressIndicator).
Прописываем зависимости.
implementation("com.google.android.material:material:1.3.0")
Добавляем компонент на экран. Есть два типа индикатора - круговой и линейный.
<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.
Аналогично поступаем с круговым индикатором. Создадим компонент с бесконечной анимацией.
<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 для установки размера.
В остальном к компоненту применимы все примеры из первой части статьи.