Сквозь дебри разработки, или как я пытался написать приложение

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Хотелось бы начать эту статью хоть с какого-то приветствия, но так как мы собрались тут ради хоть как-то полезной информации, перейду сразу к делу. Итак, немного вводных и постановка проблемы: любому начинающему разработчику нужен опыт. А как наработать опыт? Именно опыт, а не просто определённый объём зазубренной теории с полным нулём практики. Есесна написать что-то своё – проект, который не стыдно и в портфолио положить, да и просто перед знакомыми похвастаться.

А для чего нужна эта статья? Прежде всего показать, что ничего такого страшного (и уж тем более сложного) в том, чтобы попробовать написать что-то своё нет и быть не может. Ну и поделиться опытом, проблемами, которые у меня возникли, да и просто вызвать хоть какой-то отклик у более опытных товарищей.

План прост: написать приложение, которое помогает отслеживать количество каких-либо базовых упражнений. Возьмём, к примеру, следующие: отжимания, приседания и стояние в планке. Почему именно такие упражнения? Всё просто: для них любому человеку потребуются лишь руки, ноги и, по возможности, чистый пол (не обязательно, но эстетического удовольствия для).

А что получилось в итоге, вы сможете посмотреть в конце. Ссылочку на репозиторий я оставлю.


Итак, от слов – к делу. Часть 1: подготовка

Глупо было бы начинать, не имея какого-либо плана действий. Как минимум, я должен чётко знать, что я хочу создать. Идея приложения, которое может помочь отслеживать количество сделанных упражнений, вряд ли является сверхновой, потому что разного рода трекеров достаточно, но как собственный проект для длительного ковыряния вполне.

Буквально в пути был создан примерный дизайн приложения (ну и по мелочи, типа виджетов. Так, на будущее), который вы можете узреть ниже:

(Как видите, особыми художественными навыками я не отличаюсь, да, но на будущее всё же возьму себе на заметку подкорректировать дизайн)
(Как видите, особыми художественными навыками я не отличаюсь, да, но на будущее всё же возьму себе на заметку подкорректировать дизайн)

А что по функциональному наполнению? Календарь, отображение текущей даты, прогресс-бар по упражнениям, с возможностью добавлять своё, и простенькое (пускай даже пока не особо функционирующее), но меню. В дальнейшем также планирую добавить отслеживание прогресса, изменение ежедневных целей, возможность смены темы приложения с светлой на тёмную, ну и хоть какую-нибудь, но всё же геймификацию рутинного процесса: достижения за непрерывность, наличие соревновательного режима между пользователями и т. д. (да, ехидная зелёная сова-манипулятор тихонько наблюдает из-за угла).

Итак, план есть, практики нет. Пора это исправить.


Часть 2: создание основы основ приложения

Прежде всего, переходя к практике, я начал с выбора среды разработки. Мои попытки что-то сделать в IntellIj IDEA (фух, вроде правильно написал, но не суть. Не кидайтесь камнями, в случае чего) пресеклись некоторыми причинами (в том числе и меньшим удобством), в связи с чем было решено перейти в знакомый всем хоть сколько-то сведущим в мобильной разработке Android Studio. А там и макет удобный, и работать приятнее…

В общем, к сути. Да, я мог бы расписывать каждую кнопочку, которую я добавлял, но кому это может быть интересно? Поэтому кратко постараюсь пробежаться по всем «штукам», которые я смог попробовать добавить в своё приложение.

Что же, начнём. Тема приложения. Если и стоит с чего-то начинать создание, то это вряд ли с выбора темы. При попытке создать кривыми путями тёмную тему, я столкнулся с некоторыми проблемами, о чём позже.

… И да, я немного сглупил, ибо даты (а точнее числа, их обозначающие) сливались с фоном (по крайней мере, именно во время тестового запуска). Поэтому было решено оставить стандартный цвет фона (на время наработки прототипа), а более точной настройкой параметров отображения календаря заняться позднее (что будет сопряжено с подключением базы данных для реализации остального функционала).

Тот самый вывод даты, который и сливался с фоном
Тот самый вывод даты, который и сливался с фоном

В итоге проблема была решена заменой цвета фона (да, моя «тёмная тема» была сделана именно таким кривым способом). И был добавлен календарь, вот:

Ну и то, что оказалось самым интересным в реализации, и что получилось самым «вырвиглазным», так это progressbar-ы, которые хоть и адекватно функционируют в рамках своих обязанностей, но визуально это выглядит не самым лучшим образом (+ пункт в копилку будущих исправлений)

Собственно, два progress bar-a (по одному на каждое упражнение), и кнопки, через которые можно добавить совершённое количество упражнений. Ну а как это в итоге выглядит, можно увидеть далее
Собственно, два progress bar-a (по одному на каждое упражнение), и кнопки, через которые можно добавить совершённое количество упражнений. Ну а как это в итоге выглядит, можно увидеть далее

Часть 3: реальные тесты

Пришла пора собрать проект и протестировать на реальном устройстве, а не на виртуальной машине. Предварительно протестировав непосредственно на «виртуально-реальной» машине (т. е. просто подключив свой телефон) и исправив кое-какие моменты (в частности, просто изменив формат выведения даты, ибо первоначальный способ просто не работал), я скомпилировал это всё в апк-файл, готовый для распространения.

Вот как это выглядит на данный момент на моём устройстве.
Вот как это выглядит на данный момент на моём устройстве.

Итак, пациент скорее жив, чем мёртв, а это значит, что ничего не сделано зря. Пока я это пишу (и дай б-же, чтобы у меня сохранились все скриншоты, которые я делал во время разработки), я уже успел прикинуть несколько основных вещей, которые я должен сделать для того, чтобы перевести приложение из разряда не просто работающей «аппликации» в разряд простенького приложения, которое будет хоть чем-то полезно. Но до того момента ещё достаточно работы, а на этом всё. Такие дела.

К слову, с плодами моих трудов вы можете ознакомиться здесь: https://github.com/AlexUnderTheLulz/MyEverydayActivity

В общем, буду рад любому фидбеку (адекватному – опционально)

Источник: https://habr.com/ru/articles/774308/


Интересные статьи

Интересные статьи

Необходимо собрать базовый шаблон RESTful backend приложения на NodeJS + Express, который:легко документируетсяпросто наполняется функционаломпозволяет легко настраивать ...
Эта статья предназначена для тех, кто ценит свое время и не желает тратить многие месяцы на дотошное изучение нативных технологий web разработки. Знать и разбираться в ни...
Привет, Хабр! Меня зовут Андрей Романенков, я работаю ведущим программистом в IntellectoKids. Мы создаем образовательные приложения для дошкольников. Этой статьи мог...
В первой части статьи мы поговорили о том, что такое ANR (Application Not Responding), и рассмотрели несколько способов сбора информации об этих ошибках. А сегодня я расс...
При словах Греция, многие вспоминают полисы, философов, геометрию, немногие озорные - торс Джерарда Батлера и фривольные халаты с фибулой, для кого то Македония - это фал...