|
|
@@ -42,12 +42,12 @@
|
|
|
- [Экран создания коллекций](#экран-создания-коллекций)
|
|
|
|
|
|
1. **Модуль 2** - разработка приложения для часов (может быть и для телевизора). Коротенькое задание (30 минут). Нужно просто создать приложение из двух окон + работа с интернетом.
|
|
|
- - [Создание проекта для часов](#создание-проекта-для-часов)
|
|
|
+ - [Создание проекта для часов](#модуль-2-умные-часы-разработка-приложения-для-управления-коллекцией-фильмов)
|
|
|
|
|
|
1. **Модуль 3** - презентация.
|
|
|
|
|
|
->**Модуль 1**: Смартфоны (разработка мобильного приложения для управления коллекцией фильмов)
|
|
|
->
|
|
|
+## **Модуль 1**: Смартфоны (разработка мобильного приложения для управления коллекцией фильмов)
|
|
|
+
|
|
|
>Необходимо разработать мобильное приложение для смартфона, удовлетворяющее следующим требованиям:
|
|
|
>
|
|
|
>Приложение должно поддерживать следующие версии ОС:
|
|
|
@@ -122,7 +122,7 @@
|
|
|
>Необходимо строго следовать предложенному дизайну. Макеты приложения доступны по ссылке:
|
|
|
https://www.figma.com/file/tD64TlCMQEqlr8OTv6bW2o/KOD1.4-Variant3?node-id=0%3A1
|
|
|
>
|
|
|
->~~Во время работы не будет доступа в Интернет,~~ кроме документации и API. Описание протокола API доступно по ссылке: ~~https://app.swaggerhub.com/apis-docs/WorldSkills-MAD/WorldCinema/1.0.0~~ (так как АПИ на момент написания этих лекций не доступно, то я нарисовал своё АПИ и Swagger для него лежит [тут](http://swagger.kolei.ru?url=http://cinema.kolei.ru/swagger/cinema.yml))
|
|
|
+>Описание протокола API доступно по ссылке: ~~https://app.swaggerhub.com/apis-docs/WorldSkills-MAD/WorldCinema/1.0.0~~ (так как АПИ на момент написания этих лекций не доступно, то я нарисовал своё АПИ и Swagger для него лежит [тут](http://swagger.kolei.ru?url=http://cinema.kolei.ru/swagger/cinema.yml))
|
|
|
|
|
|
>Проект приложения должен быть структурирован по экранам, то есть исходные файлы конкретного экрана должны быть в соответствующей папке. Общие для нескольких экранов классы необходимо поместить в папку common.
|
|
|
|
|
|
@@ -132,7 +132,7 @@ https://www.figma.com/file/tD64TlCMQEqlr8OTv6bW2o/KOD1.4-Variant3?node-id=0%3A1
|
|
|
---------|:----:
|
|
|
Проект приложения для смартфона имеет корректную структуру (все файлы распределены по папкам, соответствующим экранам приложения) | 0.5
|
|
|
|
|
|
-## Создание проекта
|
|
|
+### Создание проекта
|
|
|
|
|
|
>Необходимо реализовать следующий функционал:
|
|
|
>
|
|
|
@@ -173,7 +173,7 @@ https://www.figma.com/file/tD64TlCMQEqlr8OTv6bW2o/KOD1.4-Variant3?node-id=0%3A1
|
|
|
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
|
|
```
|
|
|
|
|
|
-## Экран Launch Screen
|
|
|
+### Экран Launch Screen
|
|
|
|
|
|
>2. Реализуйте экран Launch Screen согласно макету. Текст должен быть отдельным элементом. Логотип приложения должен быть расположен по центру экрана.
|
|
|
|
|
|
@@ -196,7 +196,7 @@ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
|
|
|
|
|
Нигде в задании не сказано, как переходить на окно авторизации - добавьте таймер на несколько секунд, чтобы экперты успели рассмотреть вёрстку, и [переходите на следующее окно](../shpora/startActivity.md#таймер-обратного-отсчёта-и-переход-на-другое-activity)
|
|
|
|
|
|
-## Экран регистрации
|
|
|
+### Экран регистрации
|
|
|
|
|
|

|
|
|
|
|
|
@@ -411,7 +411,7 @@ registrationButton.setOnItemClickListener { parent, view, position, id ->
|
|
|
* переход в основное окно (список фильмов)
|
|
|
* обработка исключений при проверке результата авторизации
|
|
|
|
|
|
-## Экран авторизации
|
|
|
+### Экран авторизации
|
|
|
|
|
|

|
|
|
|
|
|
@@ -435,7 +435,7 @@ Email проверяется на удовлетворение шаблону и
|
|
|
|
|
|
Не забудьте сохранить полученный токен в [классе приложения](../shpora/%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B3%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85%20%D0%B2%20%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F.md) (и в предыдущем окне тоже)
|
|
|
|
|
|
-## Главный экран
|
|
|
+### Главный экран
|
|
|
|
|
|

|
|
|
|
|
|
@@ -503,7 +503,7 @@ Email проверяется на удовлетворение шаблону и
|
|
|
|
|
|
Для перехода между экранами внизу главного экрана есть панель навигации. Для её реализации есть отдельный механизм, который мы пока не рассматривали. Вы можете сюда поместить горизонтальный **LinearLayout**.
|
|
|
|
|
|
-## Экран "профиль пользователя"
|
|
|
+### Экран "профиль пользователя"
|
|
|
|
|
|

|
|
|
|
|
|
@@ -705,7 +705,7 @@ private fun sendFile(fileUri: Uri) {
|
|
|
|
|
|
Тут всё просто: в горизонтальный **LinearLayout** помещаете три элемента, как в вёрстке, задаёте этому **LinearLayout**-у тег `id` и событие *setOnClickListener* "вешаете" на **LinearLayout**. (Событие *setOnClickListener* объявлено в базовом классе **View**, от которого наследуются все визуальные элементы)
|
|
|
|
|
|
-## Экран списка чатов (Chat List Screen)
|
|
|
+### Экран списка чатов (Chat List Screen)
|
|
|
|
|
|

|
|
|
|
|
|
@@ -825,7 +825,7 @@ if (item[position].avatar != null) {
|
|
|
|
|
|
Activity используйте эту же самую
|
|
|
|
|
|
-## Экран выбранного чата (Chat Screen)
|
|
|
+### Экран выбранного чата (Chat Screen)
|
|
|
|
|
|

|
|
|
|
|
|
@@ -905,7 +905,7 @@ param.setMargins(10,10,10,10)
|
|
|
messageTextView.layoutParams = param
|
|
|
```
|
|
|
|
|
|
-## Экран коллекций
|
|
|
+### Экран коллекций
|
|
|
|
|
|

|
|
|
|
|
|
@@ -1030,7 +1030,7 @@ fun deleteItem(position: Int){
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-## Экран создания коллекций
|
|
|
+### Экран создания коллекций
|
|
|
|
|
|

|
|
|

|
|
|
@@ -1121,4 +1121,105 @@ override fun onActivityResult(
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-## Создание проекта для часов
|
|
|
+## **Модуль 2 Умные часы** (разработка приложения для управления коллекцией фильмов)
|
|
|
+
|
|
|
+>Необходимо разработать мобильное приложение для умных часов.
|
|
|
+В работе необходимо использовать систему контроля версий Git.
|
|
|
+Для входа используйте учетную запись вида wsX, где X – это номер участника. Необходимо загрузить результаты выполнения модуля в отдельную ветку с именем “Module-X”, где Х – это номер модуля. Для каждого проекта необходим отдельный репозиторий.
|
|
|
+>
|
|
|
+>Необходимо корректно обрабатывать запросы к серверу. В случае получения ошибки от сервера или отсутствия соединения с сетью Интернет необходимо отобразить соответствующий текст ошибки с помощью диалогового окна.
|
|
|
+>
|
|
|
+>Необходимо строго следовать предложенному дизайну. Макеты приложения доступны по ссылке:
|
|
|
+>
|
|
|
+>https://www.figma.com/file/tD64TlCMQEqlr8OTv6bW2o/KOD1.4-Variant3?node-id=0%3A1
|
|
|
+>
|
|
|
+>Описание протокола API доступно по ссылке:
|
|
|
+>http://swagger.kolei.ru?url=http://cinema.kolei.ru/swagger/cinema.yml
|
|
|
+>
|
|
|
+>Проект приложения должен быть структурирован по экранам, то есть исходные файлы конкретного экрана должны быть в соответствующей папке. Общие для нескольких экранов классы необходимо поместить в папку `common`.
|
|
|
+>
|
|
|
+>Разрешено использовать наработки **Модуля 1**.
|
|
|
+>
|
|
|
+>Необходимо реализовать следующий функционал:
|
|
|
+
|
|
|
+### Создание проекта
|
|
|
+
|
|
|
+Настройте иконку приложения согласно макету. Следует учесть разницу в отображении иконок на различных версиях операционной системы.
|
|
|
+
|
|
|
+Критерий | Баллы
|
|
|
+---------|:----:
|
|
|
+Создан репозиторий для проекта | 0.25
|
|
|
+Создана ветка для приложения для часов | 0.35
|
|
|
+Проект корректно сохранен в ветку для приложения для часов | 0.45
|
|
|
+Создан проект приложения для часов | 0.1
|
|
|
+Проект приложения для часов успешно собирается | 0.1
|
|
|
+Проект приложения для часов имеет корректную структуру (минус 0,1 за каждый файл, содержащийся в корне
|
|
|
+проекта) | 0.5
|
|
|
+Иконка приложения соответствует Конкурсному Заданию | 0.2
|
|
|
+**Итого** | 1.95
|
|
|
+
|
|
|
+### Реализуйте экран SignIn Screen согласно макету
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+* При нажатии на кнопку "Войти" необходимо проверять поля для ввода на пустоту, а также email на корректность (требования к email описаны в документации к API). При некорректном заполнении необходимо отобразить ошибку с помощью диалогового окна. При корректном заполнении формы необходимо отправить на сервер соответствующий запрос.
|
|
|
+* При успешной авторизации необходимо осуществлять переход на экран `Main Screen`. При получении ошибки от сервера необходимо отобразить ее с помощью диалогового окна.
|
|
|
+
|
|
|
+Критерий | Баллы
|
|
|
+---------|:----:
|
|
|
+Реализован запрос авторизации. Запрос фиксируется сервером | 0.7
|
|
|
+Экран соответствует макету (оценивается верстка). Корректно реализованы 4 элемента: логотип, два поля для ввода, кнопка (минус 0,1 за каждый отсутствующий или некорректный элемент) | 0.4
|
|
|
+Поля для ввода валидируются на пустоту (минус 0,1 за каждое поле без валидации) | 0.2
|
|
|
+При получении ошибки от сервера она отображается с помощью диалогового окна | 0.5
|
|
|
+Email проверяется на удовлетворение шаблону из Задания | 0.3
|
|
|
+При успешной авторизации открывается экран Main Screen | 0.1
|
|
|
+**Итого** | 2.2
|
|
|
+
|
|
|
+### Реализуйте экран Main Screen согласно макету
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+При нажатии на иконку должен осуществляться переход на соответствующий экран. Если экран не описан в Задании - нужно отобразить экран с надписью “В разработке”. При нажатии на кнопку Cancel (для Android - при свайпе вправо) нужно возвращаться на `SignIn Screen`.
|
|
|
+
|
|
|
+Критерий | Баллы
|
|
|
+---------|:----:
|
|
|
+Экран соответствует макету (оценивается верстка). Корректно реализованы 6 элементов: три кнопки, три надписи (минус 0,1 за каждый отсутствующий или некорректный элемент) | 0.6
|
|
|
+При нажатии на иконку осуществляется переход на соответствующий экран (минус 0,1 за каждый отсутствующий переход) | 0.3
|
|
|
+При нажатии на кнопку Cancel (на Android - при свайпе вправо) осуществляется возврат на SignIn Screen | 0.1
|
|
|
+**Итого** | 1
|
|
|
+
|
|
|
+### Реализуйте экран Chat List Screen согласно макету
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+* Данные необходимо запрашивать с сервера.
|
|
|
+* При нажатии на кнопку Cancel (для Android - при свайпе вправо) нужно возвращаться на `Main Screen`.
|
|
|
+
|
|
|
+Критерий | Баллы
|
|
|
+---------|:----:
|
|
|
+Реализован запрос списка чатов пользователя. Запрос фиксируется сервером | 0.5
|
|
|
+Ячейка таблицы соответствует макету | 0.1
|
|
|
+**Итого** | 0.6
|
|
|
+
|
|
|
+### Реализуйте экран Movies Screen согласно макету
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+* На данном экране необходимо отобразить фильмы из подборки «new» в виде списка с вертикальной прокруткой. Данные необходимо получать с сервера.
|
|
|
+
|
|
|
+Критерий | Баллы
|
|
|
+---------|:----:
|
|
|
+Реализован запрос подборки фильмов. Запрос фиксируется сервером | 0.5
|
|
|
+Ячейка фильма соответствует макету. Присутствуют
|
|
|
+3 элемента: изображение, название, кнопка (минус 0,1 за каждый отсутствующий или некорректный элемент) | 0.3
|
|
|
+Список фильмов прокручивается по вертикали | 0.2
|
|
|
+**Итого** | 1
|
|
|
+
|
|
|
+## Защита проекта
|
|
|
+
|
|
|
+Критерий | Баллы
|
|
|
+---------|:----:
|
|
|
+Создана презентация | 0.1
|
|
|
+Презентация содержит описание приложения для смартфона | 0.3
|
|
|
+Презентация содержит описание приложения для часов | 0.3
|
|
|
+**Итого** | 0.7
|