Пропустити навігацію EPAM

Використання Jetpack Compose у сучасній Android-розробці

Події
  • Android

Створення приємного та зручного інтерфейсу користувача великою мірою визначає успіх того чи іншого додатку. Jetpack Compose, технологія, яка дозволяє будувати сучасні інтерфейси швидко і ефективно, набуває все більше популярності серед Android-розробників. Про основні характеристики, переваги та недоліки Compose розповів спікер вебінару Дмитро Медведюк, Android Senior Software Developer в ЕРАМ.

На відміну від XML, свого попередника, Compose закладає нову філософію створення інтерфейсу користувача і його відповідного застосування у додатках Android. Так, розробники описують необхідні властивості у composable-функції та визначають state (поточний стан) елементів, на основі чого система створює та відображає той чи інший інтерфейс на екрані. Елементи додатків у Compose є функціями, а івенти змінюють стани і відповідно сам інтерфейс. Важливим компонентом Compose є Slot API із резервом місця у контейнері, у якому можна розмістити текст, кнопку, іконки або малюнки без обмежень для розробника. Compose застосовує макети, які за розташуванням схожі до макетів XML, зокрема, Box, Row, Column, LazyColumn. Окрім цього, у Compose використовується макет ConstraintLayout, який надає можливість задавати параметри елементам, а також розташовувати і відображати їх на екрані у бажаному порядку. Макет Scaffold у свою чергу забезпечує розміщення усіх елементів на екрані у звичному місці у Android-додатках.

Параметр composable-функції, modifier, описує багато параметрів елементів інтерфейсу, які потрібно відобразити розробнику. Існує багато методів його використання з іншими  елементами інтерфейсу. При цьому у разі вказівки невідповідних властивостей до елементів інтерфейсу modifier не дозволить це зробити, якщо певний елемент не підтримує ту чи іншу властивість. Оскільки Android виконує функції поступово і в певному порядку, важливо задавати параметри чітко і уважно. У кожній composable-функції першим параметром бажано задавати modifier для визначення властивостей, які мають містити певні кнопки чи іконки. Таким чином, ці modifiers можуть бути застосовані до всіх внутрішніх функцій, які будуть використовуватися і надалі.

Додатковою важливою особливістю Compose є функція Preview, яка застосовується і в XML. Спікер радить розбивати функції на якомога менші одиниці під час створення інтерфейсу за допомогою Compose для того, щоб той чи інший елемент міг відображатися окремо. Після цього можна задати ще одну composable-функцію, написати до неї Preview-анотацію, а Compose у свою чергу відобразить задані елементи на екрані. При цьому варто зазначити, що під час зміни окремих параметрів можна буде побачити, як буде виглядати інтерфейс користувача, що створюється. 

Зі станів у Composе в основному використовується MutableState, який задає дані, на які буде спиратися інтерфейс і відображатися на екрані відповідним чином. Стани можна створювати всередині певної composable-функції та передавати за допомогою параметру. У разі зміни стану, composable-функція зміниться відповідно до нових даних. Таким чином, під час рекомпозиції інтерфейсу будуть викликатися лише ті функції, у яких змінився якийсь стан. Дані, які знаходяться в інших моделях, наприклад, у XML, можна легко передати у функції на Compose, оскільки він підтримує різні способи використання та збереження даних (Rx2, flow та інші) за допомогою провайдерів.

Використання Composе для створення інтерфейсу користувача є дуже ефективним та менш енергозатратним. Так, під час побудови інтерфейсу за допомогою XML нам треба створити клас Kotlin, а також XML-файл та поєднати їх. Після цього потрібно вказати елементи інтерфейсу, описати властивості та поєднати ці елементи зі View- моделями та іншими ресурсами, а також задати характеристики для бажаного відображення. Застосовуючи Composе, розробнику потрібно лише створити клас Kotlin, описати функції з відображенням і передати туди всі дані із характеристиками. Composе значно полегшує та пришвидшує цей процес, оскільки з ним зникає потреба створювати XML-файли, які зазвичай є достатньо великими. Composе надає можливість застосовувати усі функції Kotlin, при цьому використовуючи менше коду. Режим Preview у Composе є дуже зручним, так як на будь-яку довільну composable-функцію можна написати Preview-функцію і одразу подивитись, як вона виглядає. Також Jetpack Compose дозволяє комбінувати різні composable-функції на різних макетах із різними параметрами, що неможливо зробити в XML.

Однак, варто зазначити, що перехід на Compose може бути непростим у разі, якщо міграцію потрібно провести у рамках великого проєкту. Це передбачає тривалу роботу із детальним і уважним описом окремих елементів інтерфейсу. Оскільки Compose ще досі знаходиться у процесі розробки, оновлення та вдосконалення, на даний момент він ще не підтримує усі свої функції. Незважаючи на це, спікер не прогнозує наявність проблем з його використанням. 

Популярність Compose буде лише зростати, оскільки він має безліч переваг. Великі відомі компанії, такі як Airbnb, Booking, Lyft, Twitter та інші, уже застосовують Compose, а менші бізнеси поступово будуть переходити на цю технологію. Майже всі Android-розробники починають створювати нові рішення на Compose за умови відсутності чітких обмежень зі сторони замовника. Спікер вебінару радить розробникам детальніше вивчати Compose, оскільки він буде інтегрований на нових проєктах, а його знання у майбутньому стане однією з вимог вакансій у ІТ-сфері. 

Щоб дізнатись більше та отримати порцію надзвичайно корисної інформації, подивіться запис вебінару на YouTube-каналі EPAM.

Підписатися на новини

Чудово! Ми вже готуємо добірку актуальних новин для вас :)

Вибачте, щось пішло не так. Будь ласка, спробуйте ще раз.

* Обов'язкові поля

*Будь ласка, заповніть обов’язкові поля

Вакансії EPAM Ukraine у Київ | Львів | Харків | Дніпро | Вінниця | Івано-Франківськ | Одеса | Чернівці | Хмельницький | Рівне | Ужгород | Тернопіль | Луцьк за напрямком Java | JavaScript | .NET | DevOps | Experience Design | Software Testing | Business Analysis | Python| Big Data | Mobile | Solution Architect | Ruby on Rails у містах за напрямком Java вакансії Київ | Java вакансії Харків | Java вакансії Львів | Java вакансії Вінниця | Java вакансії Одеса | Java вакансії Івано-Франківськ | Java вакансії Чернівці | Java вакансії Хмельницький | Java вакансії Рівне | Java вакансії Ужгород | Java вакансії Тернопіль | Java вакансії Луцьк | JavaScript вакансії Київ | JavaScript вакансії Харків | JavaScript вакансії Львів | JavaScript вакансії Вінниця | JavaScript вакансії Одеса | JavaScript вакансії Івано-Франківськ | JavaScript вакансії Чернівці | JavaScript вакансії Хмельницький | JavaScript вакансії Рівне | JavaScript вакансії Ужгород | JavaScript вакансії Тернопіль | JavaScript вакансії Луцьк | DevOps вакансії Київ | DevOps вакансії Харків | DevOps вакансії Львів | DevOps вакансії Вінниця | DevOps вакансії Одеса | DevOps вакансії Івано-Франківськ | DevOps вакансії Чернівці | DevOps вакансії Хмельницький | DevOps вакансії Рівне | DevOps вакансії Ужгород | DevOps вакансії Тернопіль | DevOps вакансії Луцьк