Начало занятий в мае

Разработчик Android

Напомнить о начале
О курсе

Основная задача курса – познакомить слушателя с практиками разработки Android-приложений на языке Java. В процессе прохождения курса слушатель узнает об особенностях Android-разработки, освоит подходы к проектированию приложений и реализации модулей, познакомится и применит на практике основные принципы Android-программирования.
Внимание будет уделено следующим темам: правильное проектирование приложения для нескольких экранов, обработка приложения в зависимости от языка, положения экрана, локализации и других параметров, связь как с внешними так и с внутренними базами данных, установка связи со серверами, связь и использование других приложений, получение, обработка и использования данных с мобильного устройства (микрофон, камера и другие устройства).
Для закрепления теоретических знаний в курсе предусмотрена практическая работа с использованием популярных библиотек. Успешное выполнение практических заданий позволит слушателю создать собственное приложение и уверенно решать задачи разработки коммерческих приложений в команде.

Программа курса
1
модуль
2
модуль
3
модуль
4
модуль
Занятие 1: Вводное занятие
Знакомство со средой Android Studio,  Software Ddevelopment Kit (SDK) * и  Android Virtual Device (AVD) Manager -ов. Запуск и создание первой программы. Установка система контроля версий Git.

ДЗ

Ознакомиться с готовыми примерами в Android Studio.
Изменить цвета и текст кнопок в следующих примерах: Basic Activity, Login Activity, Settings Activity, создать приложение с нуля прописывая все настройки, добавить в Git (каждый в свою репозиторию). Изменить созданный текст приложения и обновить программу в Git (новый commit). Установить все отсутствующие SDK версии.
Занятие 2: Структура экрана
Структура экрана в Android, ее компоненты и их свойства. Создание применение Layout, ViewGroup, View. Layout параметры, величина DP (Density Independent Pixels), папка res.

ДЗ

Написать приложение,  изменяя структуру, цвет и компоненты,  в зависимости от положения и размера экрана. Установить на разные эмуляторы, сделать скриншоты программы.
Занятие 3: Детальное ознакомление с компонентами экрана
Детальное ознакомление со ViewGroup компонентами экрана, такими как: FrameLayout, LinearLayout, RelativeLayout, ConstraintLayout.
Детальное ознакомление со View компонентами, такими как: TextView, Button, EditText, ImageView.

ДЗ

Создать экран готового приложения, используя разные подходы viewgroup и view.
Занятие 4: Программное создание компонентов экрана
Activity,  связь Activity с Layout файлом.  Программное создание компонентов экрана. Обработчики событий.

ДЗ

Изменить код таким образом, чтобы пользователь создавал N число TextView компонентов на экране. Число N вводиться пользователем с экрана и при нажатии кнопки "Создать" генерируются TextView (число  0<=N<=100).
Занятие 5: Способы оптимизации обработчиков событий
Способы оптимизации обработчиков событий, интерактивное изменение Layout параметров для уже существующих компонентов.

ДЗ

Создать приложение с ползунком, изменяющим размер кнопок. 1. Кнопки упорядочены друг на друге. 2. Кнопки находятся радом, при изменении размера одной кнопки меняется и другая пропорциональна.
Занятие 6: Свойства Actvity
Изучения основных свойств Actvity, жизненные циклы activity. Что происходит при запуске и остановках приложения. Лог и всплывающие сообщения. Знакомства с AndroidManifest.xml файлом.

ДЗ

Изменяем главную иконку приложения и программу таким образом, чтобы отображение информации на экран пользователя, а так же запуск логов, происходило с помощью обработчика событий (кнопка:включить и выключить).
Занятие 7: Создание дополнительного Activity
Создание дополнительного Activity. Введение в понятие Intent. Взаимодействие между активити,их жизненный цикл, отслеживание об изменении состояния связанных Activity.

ДЗ

Создается приложение с кнопками перехода на главном экране в отдельные страницы: 1.страница настройки, 2. профиль пользователя.
Занятие 8: Передача данных с использованием Intent
Передача данных с использованием Intent, настройки Intent фильтра, неявный вызов Activity. Вызов готовых программ.Настройки манифест файла, настройка прав пользователя.

ДЗ

Дополняем приложение экраном About Us, переход осуществляется при помощи кнопки. Из страницы About Us, при нажатии текста "Звонок", осуществляется вызов на заранее прописанный номер. Модифицировать приложение таким образом, чтобы появилась возможность добавления новых пользователей с телефонными номерами, учитывая функцию звонка. Названия экрана "Телефонна книжка".
Занятие 9: Знакомство с обратной связью между Actvity
Знакомство с обратной связью между Actvity. Рассмотрение типов передач данных. Передача объектов между Actvity. Сохранение, чтение и удаление введенных данных. Отображение введенных данный при перезапуске приложение и поворота экрана.

ДЗ

Учитывая функционалы записи и чтения данных, добавить функционал возможности изменения данных. Добавить аватар пользователя и сохранить.
Занятие 10: Подробное представление настроек Intent
Подробное представление настроек Intent. Практическое использование Intent параметров (Intent filtr, action, uri, data) Вызов нескольких Actvity, рассмотрение параметров вызова Actvity Resultcode,RequestCode.

ДЗ

В зависимости от предложенных вариантов каждый модифицирует программу по предложенному функционалу.
Занятие 11: LayoutInflater
LayoutInflater, создание из layout файла view элемент, присвоение параметров родительского элемента, создание собственный параметров, использование layoutInflater-а в списке. Пример списка ListView

ДЗ

Добавить в каждый элемент списка уникальность, добавить отдельные обработчики событий, осуществить связь списка со внешним экраном, передать ему данные.
Занятие 12: Обзор адаптеров
Обзор адаптеров, использование существующих адаптеров и их возможностей. Виды загрузки данных, ArrayAdapter, CursorLoader, SimpleAdapter, SimpleCursorAdapter, ViewBinder.

ДЗ

Использовать готовый адаптер в другом списке данных, передать функционал другому списку. Создать экран с двумя списками отображения данных, настроить их синхронность изменения
Занятие 13: Пишем адаптер с нуля
Пишем адаптер с нуля, изменения существующих адаптеров под собственные требования. Использование Header и Footer в списках, создание собственных. Использование и представление нескольких view layout-ов для одного списка.

ДЗ

Изменить адаптер уже существующего списка, добавить заголовок и нижний раздел. Отобразить различные ячейки списков в зависимости от четной и нечетной строки.
Занятие 14: Ознакомление с разновидностями списков
Ознакомление с разновидностями списков, построение таблиц, вертикальных и горизонтальных списков. RecyclerView его виды, адаптеры и принцип работы.

ДЗ

Изменить код, переделать готовый список на RecyclerView, при возможности разбить на отдельные куски. Модифицировать адаптер со сохранением прежних функционалов.
Занятие 15: Чтение списков приложений
Чтение списков приложений, отображение списка в RecyclerView. Архитектурное решение для адаптера RecyclerView, исползьзвание ViewHolder компанента, применение LayoutInflater, создание списка с разными элементами,

ДЗ

Реализовать обработчики событий для отдельных элементов RecyclerView. Создать собственный интерфейс для обработки событий.
Занятие 16: Применение отдельных свойств RecyclerView
Применение отдельных свойств RecyclerView, рассмотрение структур: таких как отоброжение данных в позициях по горизонтали, по вертикали и таблица. Методы изменения вида элемента списка, применение компонентов ItemDecoration, LayoutManager.

ДЗ

Изменить уже существующий код, добавить кнопки на главном экране, которые будут отображать список данных в формах по горизонтали, по вертикали и таблицы, изпользуя один и тот же компонент экрана.
Занятие 17: Что такое Material Design?
Что такое Material Design? Изменяем внешний вид приложения добавляя элементы из Material Design. Знакомство с элементами CardView, AppBarLayout, Toolbar, TextInputLayout, TextInputEditText, FloatingActionBar.

ДЗ

Изменить текущее приложение под стандарты Material Design. Добавить menu, FloatActionButton, CardView
Занятие 18: Стандартные диалоги
Стандартные диалоги, интерактивность пользовательского интерфейса, вопрос-ответ. Разновидность диалогов, обработчики событий, представления view элементов в диалоге.Использование списков в диалогах

ДЗ

Изменить данные в списке, при помощи выбора в открывшемся диалоговом окне представленных вариантов.
Занятие 19: Передача данных
Передача данных с одного экрана на другой, передача примитивов и объектов, передача собственных объектов данных на другие экраны. Ознакомление с Parcel, Parceable и Serializable, основные отличия.

ДЗ

Открыть экран, передать и изменить данные в другом экране, отобразить все данные в списке.
Занятие 20: Создание списков меню
Создание списков меню, использование стандартных меню андроида, изменения под требования программы, pop-up меню, выпадающие списки, открытие свойств элемента при длительном нажатии.

ДЗ

Добавить всплывающее меню к каждому элементу списка. Изменить цвет каждому элементу списка как по отдельности, так и вместе.
Занятие 21: Подробнее ознакомление с Preferences
Подробнее ознакомление с Preferences: виды данных типы. Хранение настроек приложения: экран настроек приложения. Список, экран и категория Preferences.

ДЗ

Добавить в приложении настройки со свойствами выбора языка, а также типа отображения экранов "день/ночь"
Занятие 22: Потоки
Потоки, Handler, работа с очередью сообщений в потоке. Главный поток, выполнение кода в основном потоке. Способы выполнения в UI потоке, UIMainThread.

ДЗ

Добавить в приложение свойства скачивания большого файла, отображение количества скаченного материала в процентах на главном экране.
Занятие 23: Многопоточное программирование
Многопоточное программирование, удаление сообщения из очереди потока, отложить выполнение сообщения. Обработчик Runnable. Меняем виды view на главном экране.

ДЗ

Создать приложение скачиваний видеофайлов, отображать сразу несколько скачиваний одновременно. Показать скаченный файл на экране.
Занятие 24: Знакомство с AsyncTask, структура кода
Знакомство с AsyncTask, структура кода. Параметры AsyncTask, выполнение кода до, во время и после завершения кода в AsyncTask. Способы отмены задачи во время выполнения, статусы задачи.

ДЗ

Меняем задачу с потоками, используя вместо Thread AsyncTask.
Занятие 25: Сервисы
Сервисы, предназначения сервисов. Потоки выполнения.Передача данных в сервис, методы остановки сервиса. Виды обратной связи сервиса.

ДЗ

Написать приложение, которое будет запускать сервис со скачиванием списков данных.
Занятие 26: Описание BroadcastReceiver
Описание BroadcastReceiver, локальные и глобальные их различия. Байндинг. Как реализовать уведомления. Service, IntentService, главные их отличия.

ДЗ

Отображать статус обработки скачиваний на экране в виде уведомлений. Добавить собственное решение для вида push-notification.
Занятие 27: Рассмотрение видов обработчиков событий
Рассмотрение видов обработчиков событий. Разные виды обработчиков событий. Отдельное рассмотрение клика, длинного нажатия и касания, также прокрутка экрана и поворот. Методы реализации обработчиков событий. Один обработчик событий на все одинаковых по типу.

ДЗ

Каждому списку элемента присвоить событие LongClick, Click и Тоuch. Создать собственный Hover.
Занятие 28: Ввeдение во фрагменты
Ввeдение во фрагменты. Жизненный цикл фрагмента. Схожесть и отличие жизненных циклов фрагметна и Activity. Взаимодействие Activity с фрагметнами.Предназначение SupportLibrary, основные свойства

ДЗ

Создать приложение со списком данных. Каждый элемент списков данных является заголовкам статьи, статья и элемент списка отображаются на главном экране в двух разных фрагментах, ориентация lanfscape.
Занятие 29: Основные принципы работы с базами данных
Основные принципы работы с базами данных, сохранение полученных данных в приложении. ContentProvider.

ДЗ

Участники сохраняют скаченные картинки и данные пользователей для следующего входа в офлайн режиме.
Занятие 30: Знакомство с загрузчиками
Знакомство с загрузчиками. Loaders: CursorLoaders. Работа с ContentProviderom, используя загрузчики.

ДЗ

Участники должны написать несколько загрузчиков данных с адаптерами.
Занятие 31: Подробный функционал баз данных
Подробный функционал баз данных, готовые методы управления таблицами. Работа со связанными таблицами. Сортировка, группировка и управление данных. Обновление уже существующих таблиц в базе данных.

ДЗ

Участники должны добавить возможность поиска данных по критериям и отобразить их в алфавитном порядке.
Занятие 32: Основные принципы работы с серверами
Основные принципы работы с серверами (REST FULL API), Парсинг данных (XMLParser, JSONParser), обработка и отображение данных на экран.

ДЗ

Переделать программу с асинхронного метода на синхронный, описать полученные отличия и пути борьбы с ними.
Преподаватели
Семён Пилунц
Семён Пилунц - разработчик с более чем десятилетним опытом. Занимается программированием со студенческих лет, в 2008 году с отличием окончил магистратуру факультета кибернетики политехнического университета города Еревана.

Работал ведущим специалистом по программированию баз данных и разработчиком приложений для бизнес решений в компании "Imex Group". Опыт работы в качестве ведущего специалиста по разработке мобильных приложений в компаниях "Cinehost" и "Technology & Science Dynamics / TSD".

Профессиональный опыт разработки Android-приложений, а так же преподавания Android-программирования в частных компаниях больше 5 лет.
Работодатели