Главная » Разработка для Android » Анимация с применением Surface View в Android приложении

0

Для полнофункциональной анимации нам потребуется вид Surf aceView. Он предоставляет узел в дереве видов – а значит, и пространство на дисплее, – на котором может рисовать совершенно любой процесс. После компоновки и задания размеров SurfaceView этот узел начинает реагировать на щелчки и получать обновления, как любой другой виджет. Но он не рисует, а просто резервирует место на экране, не позволяя любым другим виджетам воздействовать на пикселы, которые оказались внутри отсеченного им прямоугольника.

Для рисования на SurfaceView требуется реализовать интерфейс SurfaceHolder. Callback. Два метода – surfaceCreated и surfaceDestroyed – информируют средство реализации о том, что поверхность изображения (drawing surface) соответственно доступна или недоступна для рисования. Аргументом для обоих вызовов является экземпляр третьего класса – Surf aceHolder. В интервале между двумя этими вызовами функция отрисовки может вызывать методы LockCanvas и unlockCanvasAndPost, относящиеся к SurfaceView, и редактировать пикселы в этом виде.

Все это может показаться сложным, даже по сравнению с изощренной анимацией, рассмотренной выше. Да, признаем, это действительно сложно. Как обычно, конкурентное исполнение повышает вероятность возникновения неприятных ошибок, которые к тому же сложно находить. Пользователь SurfaceView должен быть уверен не только в том, что доступ к любому состоянию, совместно используемому несколькими потоками, правильно синхронизирован, но и в том, что доступ к Surf aceView, Surface или Canvas будет осуществляться исключительно в интервале между вызовами surfaceCreated и surfaceDestroyed. Разумеется, загружать DrawableAni mation из ресурса – гибкое решение.

Если вы собираетесь пользоваться анимацией с SurfaceView, то, наверное, планируете работать и с графикой OpenGL. Как вы позже увидите, в SurfaceView доступно соответствующее расширение для SurfaceView. Правда, оно проявится в довольно неожиданном месте.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии