Лабораторна робота №2: Основи розробки графічного інтерфейсу
В цій роботі доповнюєте новим функціоналом свій проект згідно обраної теми. Якщо lab 1 виконувалось без прив'язки до теми - саме час це зробити.
Виконуєте завдання, прикріплюєте сюди посилання на git репозиторій проекту та захищаєте виконану роботу під час лаб. заняття.
Завдання:
Основи розробки графічного інтерфейсу:
Деально розбираєте як описується інтерфейс в XML файлах (починаєте з вже створених файлів під час виконання минулого завдання).
Створюєте одне додаткове Activity (додатково до вже існуючих двох у вашому проекті).
В кожному з activity застосовуєте по одному не повторюваному типу Layout (вибираєте серед Linear, Relative, Table, ..., Grid, ...)
Додаєте елементи керування (кнопки, чекбокси, ...) таким чином, щоб кожне activity містило мінімум 5 елементів та забезпечуєте кожен елемент обробником взаємодії (натискання/hover/etc)
Лабораторна робота №3: Меню додатка та фрагменти
Продовжуєте доповнювати функціоналом проект, обраний під час виконання лаб 1.
Виконуєте завдання, прикріплюєте сюди посилання на git репозиторій проекту та захищаєте виконану роботу під час лаб. заняття.
Завдання:
опановуєте "фрагменти" та створюєте/модифікуєте сторінки додатку:
"about" - про проект, розробника, версія, та інша ключова інфа в 1-му місці.
"правила використання" - якщо передбачено тематикою вашого додатку. Якщо ж в обраній темі це не доречно, то створюєте "умови використання" - з описом ліцензійних умов.
залишаєте у проекті main activity, 2 інших форматуєте у fragments.
створюєте меню з можливістю навігації по ключовим сторінкам додатку.
для одної з сторінок передбачаєте меню "поділитись", що використовуватиме системний виклик для того, щоб поділитись контекстом сторінки через соц. мережі та ін. Приклад тут.
Лабораторна робота №4: Цикл життя Activity & Fragments в Android додатку.
Продовжуєте доповнювати функціоналом проект, обраний під час виконання лаб 1.
Виконуєте завдання, прикріплюєте сюди посилання на git репозиторій проекту та захищаєте виконану роботу під час лаб. заняття.
Додаєте Log`ування до методів в додатку згідно прикладу. Використовуєте Timber (див. Udacity: Lesson 4: part 5).
Демонструєте за допомогою Log`ів весь цикл життя Activity & Fragments. Натреновуєте можливість пояснити при здачі - що означає кожен стан та за яких умов та дій в додатку ми в нього потрапляємо.
Реалізувуєте таймер, який:
1: фіксує скільки секунд ваш додаток працює в цілому до повного закриття (onDestroy);
2: рахує скільки секунд ваш додаток зберігає фокус (активний) на екрані користувача. Кожну секунду будучи на екрані таймер посилає в log повідомлення з поточною к-стю секунд перебування в такому стані;
3: при завершенні роботи додатку в log відправяє повідомлення в форматі: X/Y секунд - час роботи додатку. Z% - додаток був у фокусі, де X - час роботи додатку в активному стані на екрані, Y - загальний час роботи додатку, Z = {X/Y*100}%.
Використовуєте для керування станами Lifecycle lib (part 13) - з 2017р оптимальний запропонований компанією Google підхід по управлінню станами activity/fragments в Android додатку. Пояснюєте при здачі Observer pattern на прикладі роботи з Lifecycle lib.
Реалізуєте onSaveInstanceState (part 17) та демонстуєте, що ключові змінні вашого додатку при його знищенні зберігаються в Bundle та їх значення повертаються назад при відновленні додатку (onRestoreInstanceState). При цьому варто враховувати, що розмір Bundle зазвичай не перевищує +-100k kilobytes. Якщо спробувати зберегти інформації більше, ніж розмір Bundle для вашого додатку, то ...? - пояснюєте, що відбудеться в такому випадку.
Наглядно показуєте та пояснюєте роботу додатку в ситуації "Configuration change" (part 18).
Лабораторна робота №5: Переосмислення архітектури додатку. Шар користувацього інтерфейсу (UI)
Продовжуєте доповнювати функціоналом проект, обраний під час виконання лаб 1.
Виконуєте завдання, прикріплюєте сюди посилання на git репозиторій проекту та захищаєте виконану роботу під час лаб. заняття.
Головний проект-приклад. {Якщо при клонуванні проекту з git та спробі запуску у вас виникають помилки - просто зробіть ще раз build проекту}
Завдання:
Розібратись з MVVM архітектурою (parts 5-6). Схема MVVM - могти пояснити суть, переваги та недоліки цього архітектурного підходу.
У вашому додатку розподілити зони відповідальності кожного фрагменту на такі компоненти:
UI Controller
ViewModel (включаючи LiveData)
та могти в деталях пояснити суть такого розподілу (див. уважно parts 6-12, особливо 11).
Реалізувати LiveData у ваших ViewModel, пояснити переваги використання LiveData та способи як ми обходились без нього раніше та чим це було гірше. (part 13-16). Пояснити LifeCycle awareness в LiveData (part 15).
Реалізувати принцип інкапсуляції даних у вашому ViewModel (part 16).
Реалізувати Event відповідно до вашої тематики (part 18).