Я разрабатываю приложение для Android, в котором мне нужен пользовательский интерфейс, требующий следующего:
Перерисовать как минимум 10 кадров в секунду
Кнопки на экране, но не прямоугольной формы
Весь экран (или, по крайней мере, фон, если он слишком тяжел для системы), перед рендерингом необходимо выполнить маскировку «porter-duff», на лету
В настоящее время я разобрался с двумя путями, у обоих есть свои минусы и плюсы:
Начните с существующего View - ViewGroup в рамках. Переопределение onDraw для добавления маскировки к нему. Это легче реализовать, но я не уверен, что вызов 'invalidate', который часто вызывает какие-либо проблемы?
Создайте альтернативную структуру View - ViewGroup и выполните рендеринг в SurfaceView. Но потом я осознаю, что включаю структуру, которая выглядит довольно близко к существующей в фреймворке, и я чувствую, что делаю что-то почти то же самое с фреймворком.
Есть предложения?
(пс. В любом случае, я не уверен, как мне поймать событие нажатия кнопки, которое имеет неправильную форму)