Я хочу реализовать кнопку воспроизведения/паузы, которая заполняется, когда музыка воспроизводится. Моя первая попытка заключалась в создании таймера, который срабатывает при 20 FPS (каждые 50 мс) и вызывает View.invalidate()
на моей кнопке. Сама кнопка имела клиентский метод onDraw(...)
, который бы, только статически, нарисовал растровое изображение на холсте.Анимировать кнопку, когда музыка играет
Однако, запустив это в симуляторе (я использую GenyMotion), я сразу заметил, что звуки дрожат, как будто процессор не справляется с этим.
Я новичок в Android, поэтому, прежде чем экспериментировать по-другому, я хотел бы знать, какой рекомендуемый подход для анимации кнопки при воспроизведении музыки?
- Использование таймера?
- Как-нибудь с помощью анимации?
- Могу ли я ускорить рисование? Мне нужно нарисовать маскированное и разоблаченное растровое изображение, так что это могут быть как-то интенсивные операции ЦП.
Проблема заключается в том, что SurfaceView (с прозрачным фоном) совсем не интегрируется в иерархию представлений.Мне придется отказаться от моей реализации на основе SurfaceView ... – Erik
Что я имею в виду: SurfaceView ничего не рисует, он дает пустой холст. Если вам нужно нарисовать «Вид» самостоятельно, «SurfaceView» - лучший выбор, чем переопределение «onDraw()», так что мы можем избежать всех операций pre-onDraw обычного представления. И вы можете использовать 'Thread', для' onDraw' вам нужен поток пользовательского интерфейса. – vakman