Анімація із застосуванням Surface View в Android додатку

Для повнофункціональної анімації нам буде потрібно вид 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 для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*