5. Android-разработка. CustomView, mesure/layout/draw/touch event/etc. | Технострим
5. Android-разработка. CustomView, mesure/layout/draw/touch event/etc. | Технострим
https://www.youtube.com/watch?v=VDhL2npKeG0
00:04 Создание кастомных вьюшек
• В видео обсуждается создание кастомных вьюшек в Android, их иерархия и жизненный цикл.
• Упоминается, что в большинстве случаев создание кастомных вьюшек не требуется, так как в Android есть множество готовых элементов.
02:16 Жизненный цикл кастомных вьюшек
• В видео подробно рассматривается жизненный цикл кастомных вьюшек, начиная с создания и заканчивая отрисовкой на экране.
• Упоминаются различные методы и конструкторы, которые используются для настройки и измерения вьюшек.
09:43 Отрисовка кастомных вьюшек
• В видео обсуждаются методы отрисовки кастомных вьюшек на экране, включая использование класса Paint для рисования на холсте.
• Упоминается, что отрисовка должна происходить не чаще, чем раз в 16 миллисекунд, чтобы избежать лагов и пропадающих кадров.
• Важным правилом является не создавать объекты внутри метода отрисовки, чтобы оптимизировать код.
13:15 Создание кастомных вьюшек
• Обсуждение важности использования кастомных вьюшек и их преимуществ.
• Упоминание о том, что кастомные вьюшки могут быть сложными и не всегда нужны.
15:02 Работа с кастомными вьюшками
• Обсуждение иерархии вьюшек и процесса измерения и позиционирования.
• Упоминание о важности использования значений, которые предоставляет родитель, и избегания лишних действий.
20:19 Пример реализации кастомной вьюшки
• Пример реализации кастомной вьюшки для отображения аудиосообщений в виде столбиков.
• Обсуждение использования различных аргументов и настройки объектов для отрисовки.
• Упоминание о необходимости учета паддингов и маржинов при отрисовке.
• Метод резол сайз используется для сокращения работы и вычисления ширины и высоты вьюшки.
• Интерполяция используется для определения количества элементов, которые могут быть отрисованы.
• Отрисовка происходит с помощью методов муфт и лайнту, которые перемещают курсор и рисуют линии.
• Атрибуты вьюшки могут быть настроены с помощью файла аттерс.
35:24 Настройка параметров вьюшки
• Атрибуты ширины и цвета могут быть заданы в файле разметки.
• Атрибуты могут быть считаны с помощью метода гет кала.
39:11 Влияние паддингов на вьюшку
• Паддинги могут быть учтены или проигнорированы в зависимости от настроек вьюшки.
• Вьюшка может быть растянута или иметь заданный размер в зависимости от настроек.
• Вьюшка растягивается на весь экран, так как содержит много данных.
• Если количество данных уменьшить, вьюшка обрезается.
• Тайпы и ресайк - ключевые слова, которые используются в анимации.
• После использования тайпы нужно вызвать метод ресайк для очистки.
45:57 Анимация с использованием дроулов
• Тяжеловесный способ анимации, требующий большого количества байт для хранения.
• Используется для сложных анимаций, таких как взрыв.
• Базовый движок анимации, используемый в Android 3.0.
• Анимация значений, а не вьюшек.
• Пример анимации движения шарика с изменением прозрачности.
• Создание нового аниматора и анимирование альфа-канала от нуля до единицы.
• Использование метода onUpdate для установки значения альфа для круга.
• Использование аниматора-сета для одновременного запуска нескольких анимаций.
• Настройка времени проигрывания анимации и запуск анимации.
• Использование интерполятора для ускорения или замедления анимации.
• Применение класса TimeInterpolator для управления скоростью анимации.
• Линейный, акселе-интерполятор, диле-интерполятор и другие интерполяторы.
• Использование акселе-интерполятора для анимации ухода с экрана.
• Использование диле-интерполятора для анимации появления на экране.
• Видео обсуждает различные способы анимации в Android, начиная с использования класса Property, который позволяет анимировать значения, такие как x, y, и alpha.
• Если вы хотите анимировать что-то нестандартное или не знаете, какие значения нужно анимировать, вы можете указать это через строку.
• Если вы используете стандартные проперти, такие как x, y и alpha, рекомендуется использовать константы, определенные в классе Property, чтобы сэкономить ресурсы.
01:06:53 Использование аниматоров
• Android также предоставляет новый аниматор, который работает на основе вызова специальных методов для анимации.
• Этот аниматор имеет ограниченное количество проперти, которые он может анимировать, и использует стандартные параметры для интерполяции.
• Этот аниматор может быть использован для простых случаев, таких как сдвиг круга, но не подходит для сложных случаев.
• Если вы не можете использовать стандартные методы для создания своего кастомного проперти, рекомендуется использовать обжиг-аниматор.
• Важно помнить, что для остановки анимации необходимо вызвать соответствующий метод для каждого типа анимации.
• Например, для вью-мешина это метод clear, а для проперти-аниматора - метод kensl.
• Кроме того, анимации должны быть остановлены при изменении жизненного цикла активите, фрагмента или вью.
• Это необходимо для предотвращения утечки памяти и сохранения ресурсов.
• В Android есть два способа анимации: лоял транзишен и транзишен фреймворк.
• Лоял транзишен - это упрощенный способ анимации, который следит за изменениями свойств элементов и применяет анимации автоматически.
• Транзишен фреймворк - это более сложный способ анимации, который позволяет кастомизировать анимации и анимировать не только прямых родителей, но и более глубокие уровни иерархии.
01:18:36 Динамические анимации
• Динамические анимации основаны на законах физики и позволяют воспроизводить реалистичные движения и жесты.
• Существуют две анимации: флинн и спин, которые используются для ускорения и отмены действий соответственно.
• Ивент - это событие касания экрана, которое может работать с пальцами, стилусами и мышью.
• Обработка касаний начинается с события даун, затем происходит событие муф и заканчивается событием кл.
• Для оптимизации работы с касаниями используется пул ивентов, который хранит созданные объекты и возвращает их обратно в пул после использования.
• Обсуждение использования жестов в приложениях и их обработки.
• Упоминается, что не стоит хранить ссылки на жесты, так как они могут быть переиспользованы.
• Мультитач - это событие, когда пользователь касается экрана несколькими пальцами.
• Для обработки мультитач используются индексы и айди, которые позволяют определить, какой палец был использован.
01:31:30 Скорость и детектор жестов
• Класс трекер позволяет отслеживать скорость движения пальца.
• Класс джестер-детектор помогает определить, какое событие хотел сделать пользователь.
01:34:50 Реализация жестов в приложении
• Пример реализации жестов в приложении, где пользователь может смахивать элементы списка для их удаления.
• Использование анимации физики для реализации смахивания.
• Метод интерсепт тачи вт используется для перехвата свайпа.
• При перехвате события, сохраняется место, где пользователь коснулся, создается новый велосити трекер и сохраняется событие опускания пальца.
• После перехвата события, следующий шаг - метод тачи вт, который сохраняет движение пальца и скорость.
• Используется метод сдвига для отслеживания движения пальца и анимации флинг для анимирования движения пальца.
01:42:58 Обработка анимации отмены
• Если скорость движения пальца равна нулю, вызывается анимация отмены.
• В случае, если анимация не дошла до конца, вызывается анимация отмены.
01:46:21 Обработка свайпа в мейн активити
• В случае свайпа, элемент удаляется из адаптера.
• В мейн активити вызывается метод свайп атом хелпер для обработки свайпа.