14

Мое первое Android приложение, Pizza Calculator

Началось все около 2 лет назад я прочитал на Пикабу вот этот пост, в котором расписано, что 2 пиццы по 30см диаметром меньше чем одна на 45см. Почитал комментарии и понял, что людям не хватает в этом вопросе ещё и сравнений веса и длины корочки, вот так у меня и появилось желание написать калькулятор, который все это мог бы посчитать.

На тот момент из опыта в каком-либо программировании у меня были только онлайн курсы по основам C# и пара написанных лаб.

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

Спустя практически год я решил перенести свое творение на Android, сделать приложение с нормальным интерфейсом и полноценным сравнением пицц.

Если бы я начинал делать приложение сейчас, я бы отказался от идеи Xamarin + C# и выбрал бы Java. Полезной информации, гайдов и примеров готового кода для Java гораздо больше и новичку было бы проще, та и Android Studio в плане мобильной разработки удобнее чем Visual Studio.

Первым успехом было приложение с одной кнопкой, которое просто запускалось на моем телефоне. Добавив поля для ввода данных, я столкнулся с первыми серьезными трудностями, я не мог сделать отображение своих объектов (пицц) в списке ListView. Во многих гайдах было описано как отобразить уже заранее созданный список объектов, а для моей ситуации требовалось переписывать базовый адаптер.

Я на этом остановился и месяца три вообще не занимался приложением, пока не узнал что есть список RecyclerView и гайдов про него гораздо больше. Так я нашел блог одного индуса, который описывал как сделать адаптер для RecyclerView и списка List<T>. Мне потребовалось две недели чтобы адаптировать его пример кода под мои нужды: добавить больше информации про объект в списке и картинку. Я использовал CardView и мой список стал немного похож на фид новостей Google:

В фотошопе я нарисовал интерфейс, который хотел реализовать:

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

Проблему удалось решить с помощью ConstraintLayout, он позволял указывать размеры в % и закреплять соотношение сторон в нужных пропорциях. Сейчас приложение смотрит на ширину экрана и делает высоту одной карточки как 70% от этого значения, а все остальные элементы настроены уже на нужный процент от высоты или ширины карточки. Также использовался TextView, который изменял размер шрифта в зависимости от размера самого блока TextView, без этого на больших разрешениях экрана текст был очень мелким.

Для главного экрана также были реализованы плавающие кнопки "добавить", "сравнить" и колесо прогресса при загрузке второго экрана с графиками сравнения всех пицц.

Построить графики по нужным данным вроде бы просто, но как добавить к ним взаимодействия, чтобы сравнивать одну пиццу со всеми остальными, а не только 2 с 1 и т.д. Были найдены графики от Syncfusion (не реклама), которые умеют скролится в сторону и одновременно отображать таким образом любое количество нужных расчетов. Также они позволяют взаимодействовать с конкретным столбцом в графике, что после нескольких дней переписок с тех. поддержкой позволило реализовать текущий функционал, когда мы жмём на нужный столбец и эта пицца сравнивает себя со всеми остальными, но уже в процентах. Таким образом можно понять, что площадь пиццы больше, например, на 10%, а дороже она уже на 20%:

На этом глобальный функционал был окончен, я также добавил несколько мелочей: кастомный шрифт Google NotoSans, адаптивную иконку приложения, перевод на 6 языков (рус, укр, англ, болгарский, чешский и итальянский), спасибо моим друзьям за переводы.

Наступил самый волнительный момент, подготовка приложения и всех сопутствующих материалов к публикации в Play Market. Было заготовлено 5 скриншотов, с короткими подсказками функционала приложения, а также было написано подробное описание. Все это опять требовалось перевести на все необходимые языки и только потом добавлять.

И вот этот день настал, я отдал честно заработанные 25$ за регистрацию учётной записи разработчика для Google Play Console.

Я залил все скриншоты, описание и прочее и столкнулся с новыми проблемами. Требовалась целевая версия Android API 28 (Android Pie), а мое приложение собиралось для API 27. Ну ничего страшного подумал я и скачав нужное SDK пересобрал приложение. И снова ошибка, с 1 августа Google требует обязательное наличие 64 битной версии приложения, пол часа поиска и этот вопрос был решен. Потом Play Console попросила чтобы приложение было собрано как Android App Bundle, а моя Visual Studio 2017 этого не умела и я потратил ещё пол дня чтобы с этим разобраться.

Не смотря на все описанные трудности и два года времени от идеи до реализации приложения, оно наконец-то доступно для всех желающих в Play Market по ссылке. Приложение абсолютно бесплатное и не содержит рекламу.

Буду рад вашим отзывам и постараюсь ответить на все вопросы в комментариях. Если приложение хоть кому-то будет интересно, то сделаю вторую версию с расширенным функционалом и добавленным в базу меню пиццерий ближайших стран.

И напоследок несколько скриншотов:

Android Developers

96 постов2K подписчиков

Правила сообщества

Друзья!


Давайте адекватно относиться к тематике сообщества. Посты, не удовлетворяющие требованиям канала, будут отклоняться. Разработка под Android - это не только описание того, что надо сделать

(освоить Java / покормить кота / установить студию), но и реальные примеры того, что Вы описываете.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества