Вы разрабатываете приложение заметок. Тестовый пример того, что у вас должно получиться вы можете скачать на свое Android-устройство.
Приложение позволяет:
- Добавить новую текстовую заметку: заголовок, текстовое содержание, дедлайн;
- Отредактировать существующую заметку;
- Просмотреть список сохраненных заметок;
- Ограничить доступ к заметкам с помощью пин-кода;
- Изменить пин-код в меню настроек.
В следующих разделах приводится детальное описание функционала + возможный путь реализации. Настоятельно советую не читать сразу предложенное решение, а сначала подумать "а как сделали бы вы?", попробовать реализовать по своему. И лишь затем посмотреть, можно ли улучшить ваше решение с помощью предложенных приемов. Текущий пример реализации не является "золотым стандартом" приложения заметок. Если у вас есть идеи, как сделать лучше и удобнее, используйте их – это более чем приветствуется! Важно лишь, чтобы эти улучшения не шли в разрез с тем, что от вас мы просим выполнить в этой работе.
Бизнес-логика:
Экраны:
- Окно с вводом пин-кода;
- Окно с перечнем всех заметок;
- Окно с созданием/редактированием заметки;
- Окно с настройками.
Если вы заметили ошибку в задании или работе демо приложения расскажите об этом дипломному руководителю.
-
Иконки используйте в векторном формате. Для этого правой кнопкой по папке drawable -> new -> vector asset. В демо приложении использовались стандартные иконки, которые уже есть в Android Studio (нажмите на кнопку с иконкой). Также можно импортировать другие иконки, например с сайтов flaticon.com, icons8.com и мой любимый iconsvg.xyz.
-
Для того чтобы сделать каждую заметку в виде CardView, нужно:
- В build.gradle (app) подключить зависимость
implementation 'com.google.android.material:material:1.1.0-alpha06'
; - В xml разметке использовать
androidx.cardview.widget.CardView
точно так же, какFrameLayout
.
- В build.gradle (app) подключить зависимость
-
FAB (Floating Action Button) находится в библиотеке, которую мы уже подключили для
CardView
. Используется как обычныйButton
. -
В демо приложении подтверждение удаления заметки сделано с помощью AlertDialog. Как и в примере из документации с помощью
new AlertDialog.Builder()
вы можете задать заголовок и текст диалога, а также с помощью методовsetPositiveButton
иsetNegativeButton
задать кнопки подтвердить и отмена.
Работа будет принята, если:
-
Приложение имеет весь заявленный функционал:
- создание;
- редактирование;
- удаление заметки;
- отсортированный список заметок;
- защита приложения пин-кодом.
-
Код приложения написан в соответствии с Java code style:
- никаких переменных
a
иb1
; - названия классов с большой буквы;
- названия методов с маленькой;
- код отформатирован чудо сочетанием
Ctrl+Alt+L
; - и вот это вот всё, о чём говорили на лекциях и писали туты.
- никаких переменных
-
Весь код обязательно должен быть осмысленно разделен на несколько файлов:
Activity
не содержит в себе кода для сохранения/считывания файлов, кода для сортировки заметок. -
OnCreate
не содержит логики обработки нажатий. -
Все строковые константы вынесены в
strings.xml
. -
Изменена иконка приложения.
- Подсвечивать заметки с прошедшим дедлайном – красным цветом, с дедлайном который истекает сегодня – желтым;
- Реализовать функционал Share. Чтобы пользователь мог нажав на кнопку отправить содержимое заметки другому человеку (через мессенджер или email).
- Использовать безопасное хранилище пин-кода;
- Использовать базу данных для хранения заметок;
- Шифрование заметок. Мне показалась неплохой вот эта статья на code.tutsplus.com, я бы начал с неё. В базе данных sqlite есть свои методы шифрования – sqlchiper.
Что следует делать, чтобы все получилось:
- Google.com:
- Попробовать найти ответ документации и исходном коде. Затем попробовать в интернете. Ведь, именно этот навык поиска ответов пригодится тебе на протяжении всей карьеры.
- Попробовать ещё раз – ответ там точно есть.
- Попробовать задать вопрос на английском языке.
- Написать руководителю как пыталась(ся) искать и почему то что нашлось не то что нужно.
- В одном вопросе должна быть заложена одна проблема.
- Если вопрос о визуальной части – обязательно прикрепить скриншот того как отображается сейчас + ссылку на xml верстку этого окна. Возможно вы найдете удобной для этого программу prntscr.
- Если нужно задать вопрос о небольшом участке кода, можно выложить на gist.github.com и отправить ссылку руководителю. Но предпочтительнее использовать следующий вариант.
- Задавать вопросы в комментариях к коду и присылать ссылку на GitHub с этой строчкой. (Если нажать на номер строки на GitHub в ссылку добавиться её номер, при последующем открытии браузер сразу перейдет к этой строке, например github.com/.../ListViewActivity.java#L32).
- Начинать работу над дипломом как можно раньше! Чтобы было больше времени на правки.
Кушайте слонаделайте диплом по-частям – commit ваших изменений после небольшого улучшения, фиксируя каждый раз проект в работающем состоянии.- Сделайте сначала основной функционал, затем вернитесь к украшательству (отступы, цвета, иконки).
Что следует делать, чтобы ничего не получилось:
- Писать вопросы вида “Ничего не работает. Не запускается. Всё сломалось.”
- Молча скидывать неработающий проект.
- Откладывать диплом на потом.
- Игнорировать git и пытаться делать все наскоком, всё сломать и не помнить что было изменено с тех пор когда хоть что-то работало.
- Пытаться сделать сразу "красиво", "окончательно".
- Ждать ответ на свой вопрос моментально. Дипломные руководители - практикующие разработчики, которые занимаются, кроме преподавания, своими проектами. Их время ограничено, поэтому постарайтесь задавать правильные вопросы, чтобы получать быстрые ответы!
- Предложите вашему дипломному руководителю пользоваться GitHub и в частности pull request для работы над диплом. Это знание пригодится вам на работе и будет плюсиком в резюме.
- Выложите этот проект на GitHub в открытом доступе, причешите и принарядите его. Это будет Большим плюсом в резюме.
- Вложите единоразово 25$ в
Googleкорпорацию добра. Купите аккаунт Google Play разработчика и выложите ваше приложение в PlayMarket – это будет ОГРОМНЫМ плюсом при устройстве на работу.