Otus android developer basic
ENG: Getting started on the movie search application. Create a project and movie pages.
- Create a project
- Push the project on GitHub
- Add a project description and ReadMe.MD
- On the first screen of your application, create some pictures with movies. Add a movie title and a details button to each picture. Any images, title, and description
- By clicking on Details — set a different color for the button.
- Saving the selected movie when changing orientations and when returning from the second screen
- Add the “Invite a Friend” button and send the invitation of your choice.
- *Add a Like icon and a text box for the comments on the second screen. Returning the value of the checkbox and the text of the comment when switching back to the first screen in console (use log.i/d). Checkbox and text comment return values
RUS: Начало работы над приложением по поиску фильмов. Создание проекта и страницы с фильмами.
- Создайте проект
- Залейте проект на GitHub
- Добавьте описание проекта в заголовке и Read.me
- На первом экране своего приложения создайте несколько картинок с фильмами. К каждой картинке добавьте название фильма и кнопку “Детали”. Изображения любые, название и описание произвольные
- По нажатию на Детали — выделяйте другим цветом название выбранного фильма, открывайте новое окно, где показывайте картинку и описание фильма
- Сохраняйте выделение фильма при повороте и при возвращении со второго экрана
- Добавьте кнопку “Пригласить друга” и отправляйте приглашение по вашему выбору (почта, смс, социальные сети)
- *Добавьте на втором экране checkbox “Нравится” и текстовое поле для комментария. Возвращайте значение чекбокса и текст комментария при переходе обратно на первый экран. Возвращенные значения чекбокса и текстового комментария выводим в лог
ENG: Using themes and qualifiers.
- Create different styles for title text and description
- Use styles on the main screen and movie detail screen
- Add support for English and Russian text
- Use the vector image from the standard set for the invite a friend button
- Add landscape support. The interface should be different. For example, in portrait 2 films in the list line, and in landscape 4
- Create a custom confirmation dialog when you exit the application by pressing the back button (use the onBackPressed method)
-
- Add a button to switch themes in the application, for example, day/night
RUS: Использование тем и квалификаторов.
- Создайте различные стили для текста заголовка и описания
- Используйте стили на экране со списком и детальном экране
- Добавьте поддержку английского и русского языков для элементов интерфейса, например, для кнопки «детали» и «пригласить друга»
- Используйте векторное изображение из стандартного набора для кнопки пригласить друга
- Добавьте поддержку альбомной ориентации. Интерфейс должен отличаться. Например, в портретной 2 фильма в строке списка, а в альбомной 4
- Создайте кастомный диалог подтверждения при выходе из приложения при нажатии кнопки back (использовать метод onBackPressed)
-
- Добавьте кнопку переключения темы в приложении, например дневной\ночной
P.S. Задание со звездочкой * — повышенной сложности. Если вы с ним не справитесь — ничего страшного, оно не является обязательным.
ENG: Work with RecyclerView.
- Switch your application to display lists using RecyclerView
- Add functionality to your application by saving movies to your favorites list (for now, keep your favorites in a List at the Activity level). To do this, use either a long press on the list item or tap on the ImageView (like icon) in the movie activity
- Create a screen where the Favorites list will be displayed
- Make it so that you can add items to the list and delete them (Only delete)
-
- Write your own ItemDecoration
-
- Explore ReciclerView.ItemAnimator yourself, create your own animations
P.S. Task with * — increased complexity. If you can’t deal with it, it’s okay, it is not obligatory. Evaluation Criteria: +1 point per attempt +1 point for completing the main task +1 point for completing a task with *
RUS: Работа со списками.
- Переведите ваше приложение на отображение списков с помощью RecyclerView
- Дополните функционал вашего приложения сохранением фильмов в список избранного (избранное пока храните в обычном List на уровне Activity). Используйте для этого или долгое нажатие на элемент списка, или тап на ImageView в виде сердечка рядом с названием фильма
- Создайте экран, где будет отображаться список Избранного
- Сделайте так, чтобы в список можно было добавлять элементы и удалять их (Только удалять)
-
- Написать собственный ItemDecoration
-
- Самостоятельно изучите ReciclerView.ItemAnimator, создайте свои собственные анимации
P.S. Задание со звездочкой * — повышенной сложности. Если вы с ним не справитесь — ничего страшного, оно не является обязательным. Критерии оценки: +1 балл за попытку +1 балл за выполнение основного задания +1 балл за выполнения задания со звездочкой *
ENG: Fragments and navigation.
- Change your application to a single Activity and fragments
- Use NavigationDrawer or BottomNavigation to navigate between fragments.
- Add CoordinatorLayout + CollapsingToolbar to the movie detail screen
- Add a Snackbar or Toast, indicating the success of adding / removing from favorites
-
- Add undo option to snackbar in favorite list
RUS: Фрагменты и навигация.
- Переведите свое приложение на единственную Activity и несколько фрагментов (https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-i-single-activities-e49fd3d202ab)
- Для навигации между фрагментами используйте NavigationDrawer или BottomNavigation (https://habr.com/ru/post/449776/), (https://material.io/components/bottom-navigation), (https://androidwave.com/bottom-navigation-bar-android-example/), (https://ahsensaeed.com/bottom-navigation-view-android-example/)
- Добавьте CoordinatorLayout + CollapsingToolbar на детальный экран фильма
- Добавьте Snackbar или Toast, сообщающий об успехе добавления\удаления из избранного
-
- Добавьте возможность отмены действия в snackbar
P.S. Задание со звездочкой * — повышенной сложности. Если вы с ним не справитесь — ничего страшного, оно не является обязательным. Критерии оценки: +1 балл за попытку +1 балл за выполнение основного задания +1 балл за выполнения задания со звездочкой
- Добавить Bottom Sheet Dialog, чтобы быстро просматривать про фильм
ENG: Connecting the application to the Internet.
- Connect the movie server API and download movie data from the server when the application starts. At the load indicator of data
- Use Glide to upload images
- Add pagination (loading new films when scrolling)
-
- Add pull to refresh
RUS: Подключение приложения к интернету.
- Подключите API сервера с фильмами и загружайте данные о фильмах с сервера при запуске приложения. Во время загрузки должен отображаться индикатор на ваш выбор +
- Используйте Glide для загрузки изображений +
- Добавьте пагинацию (подгрузку новых фильмов при скролле) +
-
- Добавьте pull to refresh
ENG: Architectural components (LiveData, ViewModel, lifecycle-aware components)
RUS: Архитектурные компоненты.
- Переведите свое приложение на архитектурные компоненты и MVVM
- Обменивайтесь данными между фрагментами используя ViewModel
- Добавьте отображение ошибок, в случае ошибки сервера или отсутствия интернета
- Добавьте возможность повторить запрос в случае ошибки
-
- Создайте ViewModel с помощью фабрики
https://medium.com/mindorks/livedata-viewmodel-making-your-own-magic-73facb06fbb LiveData — класс который содержит данные и работает по принципу паттерна Наблюдатель, поддерживает жизненный цикл lifeCycleOwner(активити, фрагмент) ViewModel — класс пощник (где-то его называют контейнером), помогает нам хранить, управлять и подготавливать данные, относящиеся к пользовательскому интерфейсу, с учетом жизненного цикла. https://medium.com/mindorks/livedata-viewmodel-making-your-own-magic-73facb06fbb
Про вопросо UseCase и Interactors: It introduces a new layer called domain where the Use Cases (also called Interactors) live. The domain layer is where the business logic happens, which is the code that determines what the app does with the data coming from the repository before it’s exposed to the UI for display.
ENG: Data storage with Room.
RUS: Хранение данных.
- Сохраняйте полученные данные фильмов в кэш (базу данных Room) +
- Сохраняйте список избранного в базе данных +
- Во время загрузки фильмов отображайте данные из кэша +
- Храните время последнего запроса данных и, если прошло меньше 20 минут, отображайте кэш, запрос в сеть идти не должен. Для хранения времени используйте SharedPreferences + 5*. В случае ошибки сервера \ отсутствия интернета отобразите snackbar с ошибкой и кнопкой «попытаться снова\обновить» +
ENG: Working with AlarmManager. New functionality were added:
- Add to the application the functionality of adding a movie to the «Watch Later» list
- When adding, you must set the date of the reminder
- When the required date comes, a push notification should appear
- Clicking on the push notification should open the movie’s detailed page
-
- Add a «Watch Later» list display to the application where you can change the date of the reminder
- Добавьте в приложение функционал добавление фильма в список «Посмотреть позже» +
- При добавлении необходимо указывать дату напоминания +
- При наступлении необходимой даты должно появляться пуш уведомление +
- Переход по пуш уведомлению должен открывать детальную страницу фильма + 5.* Добавьте в приложение отображение списка «Посмотреть позже», в котором можно будет изменять дату напоминания +
Источник
artsok / otus-android-basic Go PK Goto Github PK
otus-android-basic’s Introduction
ENG: Getting started on the movie search application. Create a project and movie pages.
- Create a project
- Push the project on GitHub
- Add a project description and ReadMe.MD
- On the first screen of your application, create some pictures with movies. Add a movie title and a details button to each picture. Any images, title, and description
- By clicking on Details — set a different color for the button.
- Saving the selected movie when changing orientations and when returning from the second screen
- Add the “Invite a Friend” button and send the invitation of your choice.
- *Add a Like icon and a text box for the comments on the second screen. Returning the value of the checkbox and the text of the comment when switching back to the first screen in console (use log.i/d). Checkbox and text comment return values
RUS: Начало работы над приложением по поиску фильмов. Создание проекта и страницы с фильмами.
- Создайте проект
- Залейте проект на GitHub
- Добавьте описание проекта в заголовке и Read.me
- На первом экране своего приложения создайте несколько картинок с фильмами. К каждой картинке добавьте название фильма и кнопку “Детали”. Изображения любые, название и описание произвольные
- По нажатию на Детали — выделяйте другим цветом название выбранного фильма, открывайте новое окно, где показывайте картинку и описание фильма
- Сохраняйте выделение фильма при повороте и при возвращении со второго экрана
- Добавьте кнопку “Пригласить друга” и отправляйте приглашение по вашему выбору (почта, смс, социальные сети)
- *Добавьте на втором экране checkbox “Нравится” и текстовое поле для комментария. Возвращайте значение чекбокса и текст комментария при переходе обратно на первый экран. Возвращенные значения чекбокса и текстового комментария выводим в лог
ENG: Using themes and qualifiers.
- Create different styles for title text and description
- Use styles on the main screen and movie detail screen
- Add support for English and Russian text
- Use the vector image from the standard set for the invite a friend button
- Add landscape support. The interface should be different. For example, in portrait 2 films in the list line, and in landscape 4
- Create a custom confirmation dialog when you exit the application by pressing the back button (use the onBackPressed method)
-
- Add a button to switch themes in the application, for example, day/night
RUS: Использование тем и квалификаторов.
- Создайте различные стили для текста заголовка и описания
- Используйте стили на экране со списком и детальном экране
- Добавьте поддержку английского и русского языков для элементов интерфейса, например, для кнопки «детали» и «пригласить друга»
- Используйте векторное изображение из стандартного набора для кнопки пригласить друга
- Добавьте поддержку альбомной ориентации. Интерфейс должен отличаться. Например, в портретной 2 фильма в строке списка, а в альбомной 4
- Создайте кастомный диалог подтверждения при выходе из приложения при нажатии кнопки back (использовать метод onBackPressed)
-
- Добавьте кнопку переключения темы в приложении, например дневной\ночной
P.S. Задание со звездочкой * — повышенной сложности. Если вы с ним не справитесь — ничего страшного, оно не является обязательным.
ENG: Work with RecyclerView.
- Switch your application to display lists using RecyclerView
- Add functionality to your application by saving movies to your favorites list (for now, keep your favorites in a List at the Activity level). To do this, use either a long press on the list item or tap on the ImageView (like icon) in the movie activity
- Create a screen where the Favorites list will be displayed
- Make it so that you can add items to the list and delete them (Only delete)
-
- Write your own ItemDecoration
-
- Explore ReciclerView.ItemAnimator yourself, create your own animations
P.S. Task with * — increased complexity. If you can’t deal with it, it’s okay, it is not obligatory. Evaluation Criteria: +1 point per attempt +1 point for completing the main task +1 point for completing a task with *
RUS: Работа со списками.
- Переведите ваше приложение на отображение списков с помощью RecyclerView
- Дополните функционал вашего приложения сохранением фильмов в список избранного (избранное пока храните в обычном List на уровне Activity). Используйте для этого или долгое нажатие на элемент списка, или тап на ImageView в виде сердечка рядом с названием фильма
- Создайте экран, где будет отображаться список Избранного
- Сделайте так, чтобы в список можно было добавлять элементы и удалять их (Только удалять)
-
- Написать собственный ItemDecoration
-
- Самостоятельно изучите ReciclerView.ItemAnimator, создайте свои собственные анимации
P.S. Задание со звездочкой * — повышенной сложности. Если вы с ним не справитесь — ничего страшного, оно не является обязательным. Критерии оценки: +1 балл за попытку +1 балл за выполнение основного задания +1 балл за выполнения задания со звездочкой *
ENG: Fragments and navigation.
- Change your application to a single Activity and fragments
- Use NavigationDrawer or BottomNavigation to navigate between fragments.
- Add CoordinatorLayout + CollapsingToolbar to the movie detail screen
- Add a Snackbar or Toast, indicating the success of adding / removing from favorites
-
- Add undo option to snackbar in favorite list
RUS: Фрагменты и навигация.
- Переведите свое приложение на единственную Activity и несколько фрагментов (https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-i-single-activities-e49fd3d202ab)
- Для навигации между фрагментами используйте NavigationDrawer или BottomNavigation (https://habr.com/ru/post/449776/), (https://material.io/components/bottom-navigation), (https://androidwave.com/bottom-navigation-bar-android-example/), (https://ahsensaeed.com/bottom-navigation-view-android-example/)
- Добавьте CoordinatorLayout + CollapsingToolbar на детальный экран фильма
- Добавьте Snackbar или Toast, сообщающий об успехе добавления\удаления из избранного
-
- Добавьте возможность отмены действия в snackbar
P.S. Задание со звездочкой * — повышенной сложности. Если вы с ним не справитесь — ничего страшного, оно не является обязательным. Критерии оценки: +1 балл за попытку +1 балл за выполнение основного задания +1 балл за выполнения задания со звездочкой
- Добавить Bottom Sheet Dialog, чтобы быстро просматривать про фильм
ENG: Connecting the application to the Internet.
- Connect the movie server API and download movie data from the server when the application starts. At the load indicator of data
- Use Glide to upload images
- Add pagination (loading new films when scrolling)
-
- Add pull to refresh
RUS: Подключение приложения к интернету.
- Подключите API сервера с фильмами и загружайте данные о фильмах с сервера при запуске приложения. Во время загрузки должен отображаться индикатор на ваш выбор +
- Используйте Glide для загрузки изображений +
- Добавьте пагинацию (подгрузку новых фильмов при скролле) +
-
- Добавьте pull to refresh
ENG: Architectural components (LiveData, ViewModel, lifecycle-aware components)
RUS: Архитектурные компоненты.
- Переведите свое приложение на архитектурные компоненты и MVVM
- Обменивайтесь данными между фрагментами используя ViewModel
- Добавьте отображение ошибок, в случае ошибки сервера или отсутствия интернета
- Добавьте возможность повторить запрос в случае ошибки
-
- Создайте ViewModel с помощью фабрики
https://medium.com/mindorks/livedata-viewmodel-making-your-own-magic-73facb06fbb LiveData — класс который содержит данные и работает по принципу паттерна Наблюдатель, поддерживает жизненный цикл lifeCycleOwner(активити, фрагмент) ViewModel — класс пощник (где-то его называют контейнером), помогает нам хранить, управлять и подготавливать данные, относящиеся к пользовательскому интерфейсу, с учетом жизненного цикла. https://medium.com/mindorks/livedata-viewmodel-making-your-own-magic-73facb06fbb
Про вопросо UseCase и Interactors: It introduces a new layer called domain where the Use Cases (also called Interactors) live. The domain layer is where the business logic happens, which is the code that determines what the app does with the data coming from the repository before it’s exposed to the UI for display.
ENG: Data storage with Room.
RUS: Хранение данных.
- Сохраняйте полученные данные фильмов в кэш (базу данных Room) +
- Сохраняйте список избранного в базе данных +
- Во время загрузки фильмов отображайте данные из кэша +
- Храните время последнего запроса данных и, если прошло меньше 20 минут, отображайте кэш, запрос в сеть идти не должен. Для хранения времени используйте SharedPreferences + 5*. В случае ошибки сервера \ отсутствия интернета отобразите snackbar с ошибкой и кнопкой «попытаться снова\обновить» +
ENG: Working with AlarmManager. New functionality were added:
- Add to the application the functionality of adding a movie to the «Watch Later» list
- When adding, you must set the date of the reminder
- When the required date comes, a push notification should appear
- Clicking on the push notification should open the movie’s detailed page
-
- Add a «Watch Later» list display to the application where you can change the date of the reminder
- Добавьте в приложение функционал добавление фильма в список «Посмотреть позже» +
- При добавлении необходимо указывать дату напоминания +
- При наступлении необходимой даты должно появляться пуш уведомление +
- Переход по пуш уведомлению должен открывать детальную страницу фильма + 5.* Добавьте в приложение отображение списка «Посмотреть позже», в котором можно будет изменять дату напоминания +
Источник