Фонова анімація в Android додатку

&nbsp

Покадрова анімація (в документації Google – frame-by-frame animation) дуже проста Вона являє собою набір кадрів, які програються в певному порядку із заданими інтервалами Анімація такого роду реалізується у вигляді підкласів від AnimationDrawable

Обєкти Ani mationDrawable, будучи подклассами Drawable, можуть використовуватися у всіх тих контекстах, що й будь-які інші Drawable Але анімує їх механізм сам не є частиною Drawable Для здійснення анімації примірник AnimationDrawable користується зовнішнім механізмом сервісів – реалізацією інтерфейсу Drawable Call back

Клас View реалізує цей інтерфейс і може використовуватися для анімації Ani mationDrawable На жаль, в такому випадку анімація буде застосовуватися тільки до того обєкту Drawable, який заданий в якості фону View

Гарна новина полягає в тому, що цього, цілком можливо, буде достатньо Фонова анімація має доступ до всього полотну віджету Всі мальованої цієї фонової анімацією здаватиметься намальованим під вмістом, створюваним методом View onDraw Тому такий спосіб погано підходить для реалізації повнофункціональних незалежних графічних обєктів, вільно переміщаються по екрану (спрайтів) І все ж, вміло користуючись класом DrawableContan пег (що дозволяє одночасно анімувати кілька різних малюнків) і тим, що фон в будь-який момент можна змінити, ви зможете досить багато чого досягти і без реалізації власного анімаційного фреймворка

Ani mationDrawable на тлі виду – от і все, що вам потрібно, щоб зробити практично що завгодно: і вказати, що в даний момент відбувається якась довготривала операція (наприклад, намалювати крилаті конвертики, які летять від телефону до стільникового вишці), і просто змусити фон кнопки на екрані пульсувати

Приклад з пульсуючим кнопкою в віджеті 6 – наочний, і при цьому він дуже простий в реалізації У прикладах 914 і 915 показаний весь необхідний код Анімація визначається як ресурс, а код застосовує анімацію до кнопки Можна задати Drawable в якості фону за допомогою setBackgroundDrawable або setBackgroundResource

Приклад 914 Покадрова анімація (ресурс)

Приклад 915 Покадрова анімація (код)

Тут є пара хитрощів Не видно ніякого способу, який дозволив би запустити фонову анімацію з методу Activity onCreate: рядок ((AnimationDrawable) viewgetBackground ()) start () цього не зробить Якщо фон додатки повинен анімованих весь той час, поки він видно, то для запуску анімації вам доведеться схитрувати У даній конкретної реалізації для запуску анімації застосовується обробник onClіck В Інтернеті зустрічаються згадки і про те, що анімацію можна успішно запускати з потоку, який ненадовго призупиняється перед викликом AnimationDrawablеstart

Крім того, якщо вам доводилося працювати з іншими фреймворками користувальницьких інтерфейсів, ви, можливо, звикли малювати фон виду в двох перших рядках методу onDraw (або його еквівалента) Якщо зробити так, то малювання піде поверх анімації Взагалі, варто привчити себе використовувати setBackground для управління фоном View незалежно від того, чи застосовується у якості фону однотонний колір, градієнт, зображення або анімація

Завантажувати DrawableAni mation з ресурсу – гнучке рішення Можна вказати список отрісовиваємих ресурсів (будь-яких зображень на ваш вибір), які складають анімацію Якщо анімація має бути динамічною, то Ani mationDrawable – найпростіший інструмент для створення динамічного отрісовиваємих обєкта, який можна анімувати на тлі View

Джерело: 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>

*

*