Введение
Общее описание
Структура приложения
Уроки
Урок 1
Создание приложения, экраны, меню, список, локализация
Урок 2
Просмотр видео (youtube), панель ввода
Урок 3
Карты, PlusMinus, пользовательская обработка экранов
Урок 4
Завершение разработки, закрепление материала
Урок 5
Интро, авторизация, фото
Урок 6
Боковое меню, горизонтальный список, пагинация, раскрывающийся список, баркод-сканер, распознавание речи, поиск, листание страниц
Урок 7
Работа с базами данных SQLite, свайп, componentDateDiapason
Урок 8
Спиннер, календарь, пиккер и события
Урок 9
Работа с пуш сообщениями, BadgeTextView
Урок 10
Анимация, кастомные компоненты
Описание библиотеки
Приложения

Урок 4

На этом уроке мы закончим разработку всех остальных экранов и закрепим пройденный материал.

Постановка задачи (задание урока)

Нужно описать все экраны, на которые можно перейти с экранов ABOUT и NEWS.

Их дизайн приведен на следующих рисунках:

Рис. 1 экран WRITE_US
Рис. 1 экран WRITE_US
Рис. 2 экран WRITE_US
Рис. 2 экран WRITE_US
Рис. 3 экран BACK_THANKS
Рис. 3 экран BACK_THANKS
Рис. 4 экран NEWS_DETAIL
Рис. 4 экран NEWS_DETAIL
Рис. 5 экран NEWS_DETAIL
Рис. 5 экран NEWS_DETAIL

На рисунках 1 и 2 изображены разные части одного и того же экрана (WRITE_US) в двух состояниях: не заполненном и заполненном. На рисунках 4 и 5 также изображен один экран (NEWS_DETAIL) верхняя и нижняя части.

Описание API

Экран NEWS_DETAIL URL depro/news/newsbyid, параметр newsId, ответ:
{
    "newsId":535,
    "title":"Сортировочная линия для мусора ориентировочно будет стоить три с половиной миллиона гривен",
    "text1":"Вчера, 25 октября, на встрече рабочей группы по решению проблемы отходов в Полтаве, .......",
    "text2":" Такая установка может переработать 50 000 тонн твердых бытовых отходов в год .....",
    "mainImagePath":"images/WP_20180709_16_35_24_Pro.jpg",
    "imagePaths":["images/WP_20180709_15_31_38_Pro.jpg","images/WP_20180709_15_31_51_Pro.jpg", .....]
}

Экран WRITE_US URL depro/send/feedbackRequest, метод POST отправка данных:
    {"name":"Петр","phone":"+38055555","comment":""}

    Ответ {"result":"oK"}

Функционал экранов знаком по предыдущим экранах.

Описание экранов

Добавим в класс MyDeclareScreens.java описание всех указанных в постановке экранов (приведены ниже), а затем поясним новые компоненты.

    fragment(NEWS_DETAIL, R.layout.fragment_news_detail).animate(AS.RL)
        .navigator(back(R.id.back))
        .component(TC.PANEL,
            model(API.NEWS_DETAIL, "newsId"),
            view(R.id.panel));

    fragment(WRITE_US, R.layout.fragment_write_us).animate(AS.RL)
        .navigator(back(R.id.back))
        .component(TC.PANEL_ENTER,
            model(ARGUMENTS),
            view(R.id.panel),
            navigator(handler(R.id.country, COUNTRY_CODE_PH, after(assignValue(R.id.codePlus))),
                handler(R.id.add_comment, COMMENT, PS.RECORD, "comment",
                    after(assignValue(R.id.comment), show(R.id.panel_comment))),
                handler(R.id.edit, COMMENT, PS.RECORD, "comment", after(assignValue(R.id.comment))),
                handler(R.id.apply, VH.CLICK_SEND,
                    model(POST, API.SEND_FEEDBACK, "name,phone,comment"),
                    after(start(BACK_THANKS)))))
        .enabled(R.id.apply, R.id.name,  R.id.phone);

    fragment(BACK_THANKS, R.layout.fragment_back_thanks).animate(AS.RL)
        .navigator(setMenu(R.id.apply), keyBack(R.id.apply));

Работа всех экранов нам знакома. Новых компонентов нет

Если все было сделано правильно, то после запуска приложения будет работать весь функционал

На этом разработка тестового приложения закончена. Мы можем оценить эффективность библиотеки декларативного программирования DePro.


Лучше пакета DePro может быть только искусственный интеллект
Задать вопрос
Отправить вопрос