Анимации и создание собственных View
На текущий момент наша Custom View принимает в качестве данных доли:
findViewById<StatsView>(R.id.stats).data = listOf(
0.25F,
0.25F,
0.25F,
0.25F,
)Что в сумме даёт нам картинку из лекции:
Q: что мы хотим?
A: мы хотим, чтобы StatsView принимала на вход данные, по которым сама рассчитывала проценты:
findViewById<StatsView>(R.id.stats).data = listOf(
500F,
500F,
500F,
500F,
)Что должно давать такую же картинку, т. к. SmartStatsView просуммирует все данные и определит, что каждый элемент — это ровно 25 %:
В нашей реализации есть один не очень приятный нюанс:
Исправьте реализацию таким образом, чтобы мы из картинки «Как сейчас» получили картинку «Как должно быть».
Если вы реализовали предыдущую задачу, то заполняемость вашего графика всегда 100 %.
Мы хотим сделать так, чтобы можно было иметь и незаполненную часть:
Необходимо дополнить реализованную на лекции анимацию поворотом на 360 градусов:
Обратите внимание, что текст остаётся неподвижным.
Для решения задачи подумайте:
- Какой параметр отвечает за прогресс анимации.
- Как перевести его в градусы.
- Какой параметр отвечает за начальный сдвиг при отрисовке каждой дуги.
На лекции мы реализовали параллельное заполнение данными:
Сейчас же мы хотим сделать последовательное:
Если вы выполнили предыдущую задачу, то у вас получилось две реализации заполнения данными:
- Параллельная.
- Последовательная.
Сделайте так, чтобы тип заполнения можно было выбирать через XML. Используйте для этого format="enum". В качестве примера реализации смотрите статью на developer.android.com.
Предлагаем дополнить параллельное заполнение данными следующим режимом:






