Сообщество - Android Developers

Android Developers

90 постов 2 040 подписчиков

Популярные теги в сообществе:

18

Волна по "Честной цене" - тру приложение для Android ч.2

Привет, пикабушники и пикабушницы.

Напомню, два месяца назад мы заловились с товарищем @Stich.626 чтобы сделать единообразное + бесплатное мобильное приложение и сайт для расчета ценников в магазинах, которое решили не бросать, любить и лелеять, насколько это возможно.

В этом посте пойдет речь про обновление мобильной программы, и технические аспекты ее написания (все таки сообщество для разработчиков). Поехали!

Волна по "Честной цене" - тру приложение для Android ч.2 Android, Приложение, Программа, Смартфон, Google, Программирование, Rustore, Длиннопост

Недооцененный баннер в Goggle Play

0 - Че там по отзывам

Перед выпуском обновления мы разумеется лезем в обе консоли разработчиков (приложение есть как в Google Play, так и в RuStore), и занимаемся вычитыванием того, что вы там понарасказывали в них, и какие хотелки запрашиваете.

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

А для всего остального есть MasterCard система тестирования и многочисленные метрики.

Так вот, среди отзывов уже давно проскакивали запросы на добавление списка с историей, сохранение результатов, сравнение нескольких выбранных показателей, и смена валют.

Сегодня вопросом списка с историей мы и займемся.

1 - Нарисуй меня полностью!

Волна по "Честной цене" - тру приложение для Android ч.2 Android, Приложение, Программа, Смартфон, Google, Программирование, Rustore, Длиннопост

Первичный вход в приложение

Перед тем, как что-то наговнокодить написать, нам нужно сформировать в файлах макетов новые сущности для функционирования списка. В нашей основной деятельности появляется один новый блок, основанный на MaterialCardView из библиотеки поддержки M3, который содержит в себе:

  • Заглушку на основе RelativeLayout, которая показывается, когда еще не было произведено ни одного расчёта;

  • Сам список ListView, который находится внутри карточки, но невидим до тех пор, пока мы не начнем что либо считать.

Волна по "Честной цене" - тру приложение для Android ч.2 Android, Приложение, Программа, Смартфон, Google, Программирование, Rustore, Длиннопост

Вариация макета при наличии расчетов

Визуально выглядит неплохо, но еще есть над чем поработать.

Дело в том, что ListView (древнейший из компонентов андроида, кста) в своем базовом варианте очень плохо выглядит. Настолько плохо, что если использовать его "как есть", то потом можно выхватить от пользователей лучи поноса:

Волна по "Честной цене" - тру приложение для Android ч.2 Android, Приложение, Программа, Смартфон, Google, Программирование, Rustore, Длиннопост

Чтобы не повторять мем из картинки выше, мы создаем новый файл макета, в котором сверстаем 1 единственный пункт меню, который в дальнейшем будет повторятся, и добавляться к списку каждый раз при его заполнении данными.

Этот же файл, кстати, мы потом переопределим в адаптере, когда доберемся до кода.

Волна по "Честной цене" - тру приложение для Android ч.2 Android, Приложение, Программа, Смартфон, Google, Программирование, Rustore, Длиннопост

В нашем случае получилась довольно простая адаптация, в которой:

  • Был добавлен корневой LinearLayout, позиционирующий дочерние элементы по горизонтали, с суммарным весом 9

  • Внутренние (дочерние) блоки, два из которых тоже на основе LinearLayout (но уже вертикально ориентированные), и еще один TextView, который нуждается только в центрировании

  • И уже внутри наши текстовые переменные, которым мы назначаем айдишки, и будем использовать в коде.

Но перед этим пойдем посмотрим, как это выглядит без учета логики на эмуляторе:

Волна по "Честной цене" - тру приложение для Android ч.2 Android, Приложение, Программа, Смартфон, Google, Программирование, Rustore, Длиннопост

2 - Пишем внутренности

На виртуальном телефоне неожиданностей не произошло, отображается все так как хотелось, поэтому двигаемся в кодильню файл основной активности:

Волна по "Честной цене" - тру приложение для Android ч.2 Android, Приложение, Программа, Смартфон, Google, Программирование, Rustore, Длиннопост

Перво - наперво, нам нужно уяснить несколько логических моментов:

  • При открытии приложения список уже есть, и поэтому он создается в onCreate. Но он пустой, так как мы еще не наполняли его данными.

  • Список уже знает, какими данными он будет наполняться (проставлены id и назначен наш кастомный слой), поэтому для него также создан адаптер, базирующийся на SimpleAdapter, который берет данные из HashMap. Он очень удобен (лично для меня), т.к. его можно в дальнейшем наполнять чем угодно: картинками, другими слоями, чекбоксами, и т.д.

  • Пока пользователь (ты) не начал ничего вводить, смысла показывать его тоже нет, поэтому мы изначально установили заданную видимость заглушки и списка в макете (не в коде). Заглушку видно, список нет.

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

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

Например, для расчета по килограммам это будет выглядеть так:

list.add(new PriceMap(price_0 + " ₽", getInputWeightGR.getText().toString() + " гр.", String.format("%.2f", result_0) + " ₽", "За килограмм"));

((BaseAdapter)adapter).notifyDataSetChanged();

Волна по "Честной цене" - тру приложение для Android ч.2 Android, Приложение, Программа, Смартфон, Google, Программирование, Rustore, Длиннопост

Проверяем на телефоне, и неожиданностей опять нет - расчет прошел по тому показателю, который мы запрашивали.

3. Доделываем

Волна по "Честной цене" - тру приложение для Android ч.2 Android, Приложение, Программа, Смартфон, Google, Программирование, Rustore, Длиннопост

Всего то 48 предупреждений.

Нам остается пройтись по инспектору, чтобы приложение выглядело не как гавно в глазах IDE более менее сносным (студия сама может проверить, что нужно улучшить или доправить):

  • Забиваем строковые ресурсы в string;

  • Раскладываем код по полочкам. Активности переносим в пакет activities, адаптеры в adapters;

  • Убираем код, который не использовали, или комментим его в TODO

  • Меняем индексы в приложении, добавляем информацию что мы там накрутили;

  • Обновляем пакеты, проверяем что из-за них ничего не поломалось.

  • Формируем AppBundle для Google Play, APK для RuStore (вторые еще толком не научились, а первые уже требуют).

И еще напоследок расшифрую некоторые моменты, которые я не упомянул до этого:

В приложении нет специального параметра (типа boolean до объявления в onCreate, или иного в SharedPrefs, например) для отображения или скрытия блока с заглушкой, так как мы полагаемся на жизненный цикл Android. Другими словами, если приложение было выгружено из памяти, или закрыто, нам не надо сохранять состояние списка, он все равно пересоздаст себя вместе с активностью. Если приложение разворачивается после скрытия (onResume), то все восстановится.

Список изначально не занимает всю площадь экрана, или не раздувается при наполнении (у него фиксированная высота). Это сделано специально, т.к. у нас еще не весь функционал реализован, и ниже будут дополнительные блоки/карточки.

ListView сам по себе является вертикально прокручиваемым по типу ScrollView, поэтому мы сохранили логику прокрутки внутри карточки, и заблаговременно сообщили слою Coordinator через параметр android:nestedScrollingEnabled="true", что вот ты, собака, должен (и будешь) прокручиваться. И даже ничего не сломали в плане юзабилити, пользователю понятно, что там внутри прокручивается список, т.к. есть соответствующая полоса прокрутки.

4 - Что дальше?

Дальше хотелось бы добавить оставшиеся вещи, в той очередности как я их вижу сейчас:

  1. Сохранение результатов в свой собственный список + назначение названия. Например, хлеб в пятерке и в ашане;

  2. Сравнение показателей по выбору их из истории, или из сохраненного списка;

  3. Смена валюты через настройки, т.к. приложение опубликовано в 15 странах.

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

https://play.google.com/store/apps/details?id=ru.oneclickstu...

https://apps.rustore.ru/app/ru.oneclickstudio.fairprice

https://oneclickstudio.ru/

На этом усе, всем спасибо, все свободны.

Показать полностью 8
5

Создать приложение для Android

Добрый вечер, Пикабу! Хочу попробовать свои силы, изучить Котлин, сделать небольшое приложение для расчётов времени. Нужно по работе мне и коллегам. (Нет, такого приложения нет в плеймаркете). Все будет просто и аскетично, только текст и расчёты внутри приложения.

Внимание вопрос, стоит ли суваться человеку никак не связанному с разработкой, но имеющего необходимость, в эту реку и будет ли результат при должном упорстве? Стоит ли игра свечь?

Разрабы крутых приложений, в чем вы делаете их?

Привет. Я делал подобный пост несколько лет назад, посоветовали Flutter. Трахаюсь с ним уже пару-тройку лет, нихера не выходит. Я сейчас про основу. Получаются простенькие приложения, но это не то. Хочу начать с крупного. Есть сайт, но хочу полноценное приложение, все изменения на сайте должны также меняться в приложении. Как Пикабу или любой крупный магаз. PWA не предлагать, не то (хоть и смог заменить полностью приложение).
Мне бы визуальный конструктор какой.
Спасибо.

15

Волна по "Честной цене" - тру приложение для Android ч.1

Привет, Пикабуняне. Наверное все уже в курсе про волну постов из заголовка (насчет честной цены), а кто не знает - скоро узнаете, и вам очень быстро надоест.

"ШО, ОПЯТЬ? еще одна каловая масса в виде АПК?" Спросили бы вы, и были бы абсолютно правы. НО есть нюанс:

В отличии от ребят, которые "выплюнули" свое творение в интернет, в нашем скромном тематическом сообществе (именно по зеленому роботу) имеет смысл показать и рассказать, как оно было сделано, как публикуется, и в чем собственно профит (рекламы же нет), и будет ли жить такая история впринципе.

.

А еще мы скооперировались с товарищем @Stich.626, чтобы все было по красоте.

Волна по "Честной цене" - тру приложение для Android ч.1 Android, Приложение на Android, Цены, Законопроект, Длиннопост

Вглядись, и узри

Вот об этом сегодня и поговорим.

Поэтому кто дочитал, здравствуйте, и встречайте: Еще одна итерация одного и того же калькулятора честная цена в правильном исполнении:

Для ЛЛ - Понимаю, не всем интересно читать технические тонкости, поэтому можете потыкать ссылки, и посмотреть скриншоты.

https://apps.rustore.ru/app/ru.oneclickstudio.fairprice - RuStore

https://play.google.com/store/apps/details?id=ru.oneclickstudio.fairprice - Google Play

https://проверьцену.рф

Волна по "Честной цене" - тру приложение для Android ч.1 Android, Приложение на Android, Цены, Законопроект, Длиннопост

Немного предыстории.

4 дня назад я вписался в одном из активных постов @Stich.626, , и дал комментарий на предмет оформления приложения - калькулятора, чтобы вы, дорогие мои могли считать килограммы / штуки / литры в свое удовольствие. А обещания надо держать, особенно на пикабухе.

С данным товарищем (Stich.626), кстати, активно общаемся, и продолжаем улучшать сайт и мобильное приложения, доводя его до логического идеала. Каждый со своей стороны, разумеется.

Так вот. Вернувшись через те же 4 дня, я офигел, сколько клонов уже выпустилось за это время:

Волна по "Честной цене" - тру приложение для Android ч.1 Android, Приложение на Android, Цены, Законопроект, Длиннопост

Сколько-сколько ?

Если перечитывать и упоминать всех всех, которые уже что то сделал / делает на эту тему, то список будет немаленький, но упомяну парочку:

@Meantol21, Рукотворное (и смехотворное) ТЗ со смайликами, но меня порадовало. Передаю ему такой же упоротый привет:

приВеТиКИ 🥑🧅🍾🥃🥂🥄😗😍😙☺😛😘🙃😗☺😛😀😉🤣🤑🎃🤖👹💩💩👹👻🥴👻🙄🤕🙄🤕✍💪🦶💪✍💅💄💅💄🦶💪🤙🧜‍♂️🤵🧞‍♀️🧛‍♀️🧝‍♀️🧝‍♂️🧟‍♂️🧤👟🧤🥾⛑️👟🧣🥻👢👘🕶🕶👜🎒¯\_(ツ)_/¯🥑🧅

@kajoy83308, раньше всех оформил приложение, но поленился публиковать в Google Play, и чуть чуть не докрутил функционал в части расчетов. Молодец, хвалю

@wasd37, сделал приложение для iOS, но я к сожалению более не яблокофил, хотя в свое время хотел учить плюсы, когда свифта еще не было. Могу только покидать лучи добра и стремления в освоении (без сарказма)

Ну да ладно, перейдем к написанию в студии:

Волна по "Честной цене" - тру приложение для Android ч.1 Android, Приложение на Android, Цены, Законопроект, Длиннопост

Писать мы будем на ванильной Java, без ваших котлинов. Почему? Да потому что я пользовался Eclipse в свое время, и не ненадо мне это гавно совать пока что не хочу переучиваться, и привык к базовому пониманию андроида, как это было заявлено изначально, и развивается до сих пор параллельно с новыми языками.

Так вот, в базовом понимании приложение делится на модули, на которые мы будем натягивать функционал и всю красоту. Модулей у нас установлено аж несколько штук:

  • AppCompat - Для поддержки и совместимости со старыми SDK (предыдущими версиями Android)

  • Material - Библиотека поддержки для MaterialYou, M2

  • Transformation - Библиотека для анимации (ну я сам не умею в них)

  • YandexMetrika - Собственно, для аналитики: ошибки, кол-во устройств и т.д.

Рекламы, как видите, не завезли

После установки модулей нас встречает экран первой (и пока единственной) активности (MainActivity) - ниже все общие классы.

Приложение целиком, кстати, получилось всего на 200+ строк, это не много

Волна по "Честной цене" - тру приложение для Android ч.1 Android, Приложение на Android, Цены, Законопроект, Длиннопост

По названию, кстати, каждого из методов можно примерно понять, что происходит

Базовый расчет всей радости выполняется по достаточно простому принципу:

X / Y * 1000 Для килограммовых товаров и литров

X / Y Для штучных товаров

Далее, мы верстаем внешний вид, руководствуясь гайдлайнами из последней версии материального дизайна M3

https://m3.material.io/

Волна по "Честной цене" - тру приложение для Android ч.1 Android, Приложение на Android, Цены, Законопроект, Длиннопост

Важное упоминание - так как слой трансформирования показывается после проведения расчётов, по умолчанию он невидим, и соответственно -> пока мы не заполним все поля, ничего показываться нам не будет. Для этого установлена специальная проверка на заполненность полей.

Именно поэтому слои идут задом наперед (activity_main это родительский слой, content_main соответственно дочерний)

Волна по "Честной цене" - тру приложение для Android ч.1 Android, Приложение на Android, Цены, Законопроект, Длиннопост

Для дополнительной красоты было добавлено напоминание, что делать (вдруг вы забудете) - его же планируется использовать в дальнейшем для уведомлений

Волна по "Честной цене" - тру приложение для Android ч.1 Android, Приложение на Android, Цены, Законопроект, Длиннопост

Сам баннер скрывается посредством SharedPreferences = просто надежно, сердито.

Казалось, бы конец. Но предстоят обновления и исправления:

Текущие баги:

  • При перевороте экрана введенные поля сбрасываются (нет сохранения текущего состояния активности)

  • При нажатии кнопки "Новый расчет" не сбрасываются поля ввода (это нужно для удобства)

  • Не написан кусок кода для функциональности истории

  • Не написан кусок кода для функциональности шэринга

  • За кнопкой настроек спрятана магия

Что хотелось бы добавить:

  • Сейчас приложение доступно для 15 стран бывшего СССР. Почему бы не добавить валюты и для других пользователей

  • В приложении нет упоминания, что оно родилось на Пикабу. Считаю, должно быть

  • Сбор статистики по городам (Самое дороге молоко... в Выборге!). По большому счету это информационный шум, но все же

  • Свой виджет для перехода к рассчету

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

Потестировать бесплатно без рекламы и СМС можно вот тут:

https://apps.rustore.ru/app/ru.oneclickstudio.fairprice - RuStore

https://play.google.com/store/apps/details?id=ru.oneclickstudio.fairprice - Google Play

https://проверьцену.рф

Показать полностью 7
10

Моё собственное приложение с задачами и бриллиантами

Всем привет. Часто вижу, как люди показывают свои инди-игры на Pikabu, поэтому решила рискнуть и рассказать про приложение, которое я разрабатываю.

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

Приложение помогает получать удовольствие от выполнения ежедневных задач. Вот почему оно помогает получать удовольствие:

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

Можно ещё бросать бриллианты в сундук каждый раз, когда делаете что-то полезное. Например, разбираетесь с большой задачей. Если бросать бриллианты каждый раз, когда вы немного продвинулись, проще войти в состоянии потока и получать удовольствие от работы. Вот так выглядит сундук:


Если задача рутинная например, её нужно выполнять каждый день, или через день, или в некоторые дни недели, или по определённым числам, для неё можно настроить расписание. Задача будет стоять в календаре на все нужные дни, и в эти дни можно будет помечать её сделанной и получать за это бриллианты.

Задача может быть вообще не календаре, но она всё равно будет в общей куче задач. По всем задачам есть поиск. Это удобно для задач типа "выбросить пустые коробки из гаража". Допустим, у вас есть время и нет задач на сегодня. Вы можете найти подходящую задачу в общей куче и заработать немного бриллиантов.

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

Ещё задачи можно раскрашивать разными способами:

Пока есть много проблем и недоработок, но я уже пользуюсь.

Мои друзья пока отказываются пользоваться, в основном, потому что сразу не понятно, как это делать. Сейчас задача добавляется, только если нажать на знак "+" сверху. Даты без задач некликабельны. Люди открывают приложение, тыкают на даты и решают, что ничего не работает. Я планирую сделать так, чтобы при клике на дату можно было сразу добавить задачу на эту дату, но это будет уже в следующем релизе.

Приложение называется Brilliant Flow. Если вы хотите в него потыкать, приложение можно скачать в Google Play:

https://play.google.com/store/apps/details?id=pro.progr.dofl...

или RuStore:

https://apps.rustore.ru/app/pro.progr.doflow

Буду рада вообще любым отзывам и вопросам.

Показать полностью 3
15

Everchanging Sony Ericsson s500i

Everchanging Sony Ericsson s500i Android, Живые обои, Программирование, Исходный код, Видео, Длиннопост

В далеком 2007 был выпущен такой вот телефончик. С железной стороны обычный телефон тех лет. Отличительной особенностью у него была тема оформления Everchanging. Много анимаций, изменяющийся фон, который изображает как различные сезоны и время дня. На эту фишку была направлена и рекламная компания аппарата.

И эта обоина прям запала в душу. Был у меня чуть позже Sony Ericsson c902, и он тоже прекрасно прожевал эту тему, только меню приложений пришлось немного пропатчить. Это всё лирика. Ходил я и любовался этой темой.

Затем пришёл на смену Андройд. И всё, прошла пора, ничего подобного для андройда я не видел.

В какой-то момент я созрел до того, чтобы, как всегда, всё сделать самому. В общем решил я возродить эти обои для Андройда.

4 года разработки, компромиссов и мучений. Первое же с чем пришлось столкнуться сразу - это то самое маленькое разрешение экрана оригинала 240х320 пкс.

Долгое время я не мог никак придумать, как увеличить разрешение. Казалось бы, - бери нейронку и в путь. Искал, пробовал, - все нейронки которые предлагали Upscale делали какое-то мыло. Но всё-таки, спустя пару лет нашлась одна, которая смогла. Зацените:

Everchanging Sony Ericsson s500i Android, Живые обои, Программирование, Исходный код, Видео, Длиннопост

В итоге всю графику пропустив через неё, получилось сделать то, что нужно.

Далее было много боли и страданий программирования. Я раз шесть, садился писать, потом надоедало, забивал, забрасывал. Через полгода-год садился опять, вспоминал, что и как писал, переписывал по новой.

Пришлось повозиться с адаптацией под экраны с соотношением 9:16 и 9:21, так как оригинал 3:4. В целом протестировав на всех каких только можно соотношениях не меньших чем 3:4 (не знаю как правильно написать - от 3:4 и длиннее) - вполне корректно. Некоторое анимации тоже пришлось адаптировать, тоже получилось хорошо на мой взгляд.

В итоге удалось сделать на 99.9% всё как в оригинале!

Если Вы помните эту тему, и хотели бы её использовать вновь - Это приложение для Вас.

Требования к системе:

Графики много, поэтому оперативки порядка 300мб. может скушать. Текстуры кушают, да. Можно было бы грузить текстуры только в момент работы анимации, но тогда при смене анимации, были бы тормоза подгрузки, - пришлось отказаться от этого и грузить всё сразу. Поэтому не стоит на слабых аппаратах с большими экранами запускать - тяжёловато для них.

Телефоны до API21 (Андройд 5) не поддерживаются, т.к. они не умеют силами системы векторную графику рисовать. - Да и не думаю что в современном мире такие еще остались в работе.

Ну и графика под горизонтальную ориентацию не рассчитана, ни тут ни в оригинале.

Скачать apk или посмотреть исходный код можно с моего гитхаба: SCratORS/Everchanging: SonyEricsson "Everchanging theme" standby animation wallpaper (github.com)

Если Вам понравилось, можно купить её в rustor'e: Everchanging – скачать приложение для Android – Каталог RuStore

Разницы в apk'ашках нет, они идентичны.

Показать полностью 2 1
3

Мой вечный спор. Айфон или же нет...

На днях я задумался о покупке айфона, но какое-то внутренее "Я" в то же время хочет остаться на Андроиде. Чем же меня завлек айфон? Ну наверное оптимизацией да и в целом все, но в то же время я пользуюсь самсунгом на котором тоже нет с этим проблем. Мне нахваливали камеру в айфонах, ну типа она там технологичная хорошая. А мне на самом деле камера в телефоне вообще не играет никакой роли, когда есть про фотики. Если быть честным то для рядового пользователя хватит и камеры бюджетника любого. Для загрузки в вк или инсту фоток в полне хватит. Я не думаю что люди такие "Ой вот же аватарка то а! На хорошую камеру сфоткали, ну сразу видно айфон!"
А настоящий профи фотограф или оператор никогда не возьмет в руки мобильную камеру.
Да, айфон это история и технологии, да айфон это качество. Но на рынке в наше время ситуация совсем другая.
А как любителю крмп или сампов так вообще трагедия без логотипов и шильдиков на авто.
Вот в принципе эти факторы меня и держат пока на андроиде. А как относитесь к этому вы? Стоит ли айфон своих денег или нет?

11

Huawei всё!?

Захожу сегодня в админку App Gellary и вот такое сообщение он мне показывает.
Ваша текущая учетная запись зарегистрирована в [Европе или России]. В настоящее время HUAWEI CLOUD не поддерживает учетные записи в вышеуказанных регионах. Пожалуйста, войдите в систему с учетными записями в других регионах.

Huawei всё!? Huawei, Приложение, Санкции, Блокировка
Отличная работа, все прочитано!