В этом репозитории я выложил домашние задания ко второму уровню курсов по разработке под Android на портале Geekbrains.ru.
Надеюсь, они кому-нибудь принесут пользу.
Успехов в изучении программирования!
- Добавить боковое меню (дровер)
- Сделать табы со свайпом без использования библиотеки (http://blog.grafixartist.com/parallax-scrolling-tabs-design-support-library/ или любой другой гайд из интернета)
- Добавить второе активити с кнопкой назад
- Сделать попап меню
- Сделать основное меню со вложенностью.
Простое приложение с информацией обо мне как об Android-разработчике. Используется DrawerLayout, NavigationView, CoordinatorLayout, TabLayout, ViewPager, контекстное меню, всплывающее меню, главное меню, явные и неявные интенты, копирование текста в буфер.
- Написать приложение с двумя полями ввода(ключ-значение) и тремя кнопками: "Добавить", "Проверить" и "Удалить". При нажатии на "Добавить" сохраняет эти значения в SharedPreferences. "Проверить" проверяет по ключу значение и выводит во второе поле. "Удалить" удаляет по ключу.
- Создать базу данных и хранить эти данные также и там.
- Добавить фотографию и сохранить во внутренней и внешней памяти. Загрузить из места сохранения и посмотреть в приложении
- Добавить шифрование при записи в SharedPreferences и расшифровку при загрузке из него.
- Добавить к приложению с предыдущего урока контент-провайдер.
- Сделать новое приложение-клиент, которое будет через провайдер получать и обновлять данные.
Хорошее тренировочное задание, которое заставило попотеть.
Я объединил два урока, т. к. они тесно связаны друг с другом. В одном проекта два модуля: contentprovider и contentproviderclient — по сути отдельные приложения.
Всё сделано по пунктам. Добавление фотографии реализовано через неявный интент к камере, при отображении снимка его размеры оптимизируются. Для шифрования использовалась библиотека javax.crypto.Cipher.
- Скачайте и отобразите картинку с помощью асинхронного таска. Подробнее: http://stacktips.com/tutorials/android/download-image-using-asynctask-in-android
- Напишите программу, которая каждую секунду отображает на экране данные о времени, прошедшем от начала запуска аппа, а другой ее поток выводит сообщение каждые 5 секунд. Предусмотрите возможность ежесекундного оповещения потока, воспроизводящего сообщение, потоком, отсчитывающим время. Не внося изменений в код потока-"хронометра", добавьте еще один поток, который выводит на экран другое сообщение каждые 7 секунд. Предполагается использование методов wait(), notifyAll(). Справка: wait() принуждает поток остановиться, пока другой поток не войдет в него и не вызовет метод notify(). notify() возобновляет работу потока, который вызвал метод wait() в том же объекте. notifyAll() возобновляет работу всех потоков, которые вызвали метод wait() в том же объекте. Одному из потоков дается доступ. Подробнее: https://metanit.com/java/tutorial/8.5.php
Задачи на понимание многопоточности и применение класса AsyncTask.
В проекте два модуля.
- Создайте приложение — галерею. Изначально оно будет пустым и приглашать пользователя скачать несколько картинок (не меньше пяти). Т.е. попробуйте реализовать что-то вроде маленького приложения работы с облаком. Как только пользователь нажимает "Скачать", вы должны скачать все эти картинки в сервисе. По окончанию загрузки они должны отобразиться на экране. Поскольку работа будет именно в сервисе, то у пользователя будет возможность свернуть приложение (я буду это проверять). В этом случае нужно вывести уведомление в бар наверху, что загрузка звершена. После открытия картинки должны отображаться. Для это ваш сервис должен их сохранять как обычные файлы, а в методе onStart() вы должны считывать директорию с ними и отображать. Узнать, завершен ли сервис или запущен: http://stackoverflow.com/questions/7951869/how-to-know-running-services-is-finished http://stackoverflow.com/questions/600207/how-to-check-if-a-service-is-running-on-android
Реализовал как полноэкранное приложение.
- Добавить виджет с отображением четырех последних смс сообщений.
Виджет-список.
При добавлении виджета на экран можно выбрать количество выводимых сообщений (но не более 20).
- Сделать виджет, отображающий ваше текущее местоположение (адрес + координаты).
- Добавить на карту точки с описанием.
Домашнего задания нет.
Очередной виджет + самая простая реализация Google Maps.
В проекте два модуля.
Для запуска карт, нужно получить ключ от Google API. Ищите в Гугле, как это сделать.
К последнему занятию по отладке домашнего задания не было.