Господа ИТ-шники. Вы все хвастаетесь про зарплаты и как вы заебались работать. но, блять, вы можете хотя бы RuStore сделать нормальным. Не обновится нормально, да вообще ни хрена. Зато Вы работаете на удалёнке и устаёте пиздец как. Хвастаетесь что норм платят, но прогресса я не вижу.
Понадобилось мне скачать мобильное приложение одного из банков. На Гугле его, по понятным причинам, нет с прошлого года. Банк любезно предоставляет ссылку на RuStore. И тут начинается цирк. Для скачки приложения мне необходимо установить на смартфон этот самый Рустор. Смешно, что в инструкции по установке прямо написано, что смартфон будет ругаться, но вы жмите кнопку "всё равно установить". Рустор мне нахрен не нужен, а разработчики этого чуда будут гореть в аду.
Мы продолжаем работать над игрой "Машинист Московского Метро" и выпускаем первое обновление, которое затронуло как механику игры, так и визуал:
Новые туннели, рельсы и оборотные тупики
Теперь в игре более детализированный туннель, рельсы и оборотные тупики.
АРС/АЛС
Добавлено ограничение скорости. Красная цифра - текущее ограничение. Желтая цифра - ограничение на следующем участке.
Марксистская: добавлены люстры
Площадь Ильича: добавлена скульптура Ленина
Третьяковская (северный зал): добавлен орнамент Верещагина и Васнецова
Другие изменения
• Добавлены недостающие надписи с названием станции на Новокосино, Новогиреево, Шоссе Энтузиастов, Авиамоторной, Площади Ильича, Марксистской, Третьяковской. • Добавлен предупреждающий писк при закрытии дверей; • Теперь при положении контроллера в "0" поезд теряет скорость по инерции; • В обучении добавлен пункт про АЛС/АРС; • Добавлена возможность выбора времени; • Новый раздел: "Новости".
Скажите, а только у меня это приложение жутко подтормаживает во время обновлений? Я бы даже сказал, напрочь вешает телефон, и там прекращают работу какие-то системные приложения (к счастью, без последствий). Мне интересно, на Пикабу есть разработчики Rustore? Могут ли пояснить, в чем, собственно, проблема - у них руки кривые, или есть объективные причины такой плохой работы? Я, с одной стороны, рад, что у нас есть свой репозиторий, в котором можно скачать приложения банков. Но обновления - это просто жесть. Две основные проблемы: - Rustore начинает загружать apk с приложением в тот момент, когда ему хочется, и делает это так неоптимизировано, что вешает напрочь телефон. Это длится обычно недолго, несколько минут, но ппц как бомбит, если это происходит в середине какой-то важной коммуникации; - сами обновления можно проводить только вручную, автоматически он скачивает только apk. Собственно, после этого нужно заходить в приложение и по очереди тыкать на кнопку установить напротив каждого приложения, ждать, пока он установит этот пакет, тыкать на следующий. Google Play производит обновления в фоновом режиме.
Недавно у меня с другом вышла игра про московское метро: Об игре Управляй поездом московского метро, перевози пассажиров, изучай станции! • Линии метро: - Калининская (8) (Третьяковская, Марксистская, Площадь Ильича, Авиамоторная, Шоссе Энтузиастов, Перово, Новогиреево, Новокосино). • Поезда: - "Ока" 81-760/761. • Информатор: - Настоящие записи информатора московского метро.
Напомню, два месяца назад мы заловились с товарищем @Stich.626 чтобы сделать единообразное + бесплатное мобильное приложение и сайт для расчета ценников в магазинах, которое решили не бросать, любить и лелеять, насколько это возможно.
В этом посте пойдет речь про обновление мобильной программы, и технические аспекты ее написания (все таки сообщество для разработчиков). Поехали!
Недооцененный баннер в Goggle Play
0 - Че там по отзывам
Перед выпуском обновления мы разумеется лезем в обе консоли разработчиков (приложение есть как в Google Play, так и в RuStore), и занимаемся вычитыванием того, что вы там понарасказывали в них, и какие хотелки запрашиваете.
Лично я придерживаюсь мнения, что разработчик (сайта, приложения, не важно) уже сам должен хорошо понимать, чего в приложении хватает (или не хватает), и на основе отзывов должна формироваться картина того, что должно ускорятся, или что добавлять в ту или иную итерацию.
А для всего остального есть MasterCard система тестирования и многочисленные метрики.
Так вот, среди отзывов уже давно проскакивали запросы на добавление списка с историей, сохранение результатов, сравнение нескольких выбранных показателей, и смена валют.
Сегодня вопросом списка с историей мы и займемся.
1 - Нарисуй меня полностью!
Первичный вход в приложение
Перед тем, как что-то наговнокодить написать, нам нужно сформировать в файлах макетов новые сущности для функционирования списка. В нашей основной деятельности появляется один новый блок, основанный на MaterialCardView из библиотеки поддержки M3, который содержит в себе:
Заглушку на основе RelativeLayout, которая показывается, когда еще не было произведено ни одного расчёта;
Сам список ListView, который находится внутри карточки, но невидим до тех пор, пока мы не начнем что либо считать.
Вариация макета при наличии расчетов
Визуально выглядит неплохо, но еще есть над чем поработать.
Дело в том, что ListView (древнейший из компонентов андроида, кста) в своем базовом варианте очень плохо выглядит. Настолько плохо, что если использовать его "как есть", то потом можно выхватить от пользователей лучи поноса:
Чтобы не повторять мем из картинки выше, мы создаем новый файл макета, в котором сверстаем 1 единственный пункт меню, который в дальнейшем будет повторятся, и добавляться к списку каждый раз при его заполнении данными.
Этот же файл, кстати, мы потом переопределим в адаптере, когда доберемся до кода.
В нашем случае получилась довольно простая адаптация, в которой:
Был добавлен корневой LinearLayout, позиционирующий дочерние элементы по горизонтали, с суммарным весом 9
Внутренние (дочерние) блоки, два из которых тоже на основе LinearLayout (но уже вертикально ориентированные), и еще один TextView, который нуждается только в центрировании
И уже внутри наши текстовые переменные, которым мы назначаем айдишки, и будем использовать в коде.
Но перед этим пойдем посмотрим, как это выглядит без учета логики на эмуляторе:
2 - Пишем внутренности
На виртуальном телефоне неожиданностей не произошло, отображается все так как хотелось, поэтому двигаемся в кодильню файл основной активности:
Перво - наперво, нам нужно уяснить несколько логических моментов:
При открытии приложения список уже есть, и поэтому он создается в onCreate. Но он пустой, так как мы еще не наполняли его данными.
Список уже знает, какими данными он будет наполняться (проставлены id и назначен наш кастомный слой), поэтому для него также создан адаптер, базирующийся на SimpleAdapter, который берет данные из HashMap. Он очень удобен (лично для меня), т.к. его можно в дальнейшем наполнять чем угодно: картинками, другими слоями, чекбоксами, и т.д.
Пока пользователь (ты) не начал ничего вводить, смысла показывать его тоже нет, поэтому мы изначально установили заданную видимость заглушки и списка в макете (не в коде). Заглушку видно, список нет.
Из хорошего, когда мы писали приложение в первый раз, то определили подсчет результата через switch - приложение знает, какой показатель мы считаем, поэтому нам просто нужно дать адаптеру сведения из того или иного метода расчёта.
Для этого мы добавляем две строчки кода для каждого из режимов. В первой добавляем данные, а второй говорим приложению, что список обновился (и тебе по-хорошему надо перерисовать список).
Например, для расчета по килограммам это будет выглядеть так:
Проверяем на телефоне, и неожиданностей опять нет - расчет прошел по тому показателю, который мы запрашивали.
3. Доделываем
Всего то 48 предупреждений.
Нам остается пройтись по инспектору, чтобы приложение выглядело не как гавно в глазах IDE более менее сносным (студия сама может проверить, что нужно улучшить или доправить):
Забиваем строковые ресурсы в string;
Раскладываем код по полочкам. Активности переносим в пакет activities, адаптеры в adapters;
Убираем код, который не использовали, или комментим его в TODO
Меняем индексы в приложении, добавляем информацию что мы там накрутили;
Обновляем пакеты, проверяем что из-за них ничего не поломалось.
Формируем AppBundle для Google Play, APK для RuStore (вторые еще толком не научились, а первые уже требуют).
И еще напоследок расшифрую некоторые моменты, которые я не упомянул до этого:
В приложении нет специального параметра (типа boolean до объявления в onCreate, или иного в SharedPrefs, например) для отображения или скрытия блока с заглушкой, так как мы полагаемся на жизненный цикл Android. Другими словами, если приложение было выгружено из памяти, или закрыто, нам не надо сохранять состояние списка, он все равно пересоздаст себя вместе с активностью. Если приложение разворачивается после скрытия (onResume), то все восстановится.
Список изначально не занимает всю площадь экрана, или не раздувается при наполнении (у него фиксированная высота). Это сделано специально, т.к. у нас еще не весь функционал реализован, и ниже будут дополнительные блоки/карточки.
ListView сам по себе является вертикально прокручиваемым по типу ScrollView, поэтому мы сохранили логику прокрутки внутри карточки, и заблаговременно сообщили слою Coordinator через параметр android:nestedScrollingEnabled="true", что вот ты, собака, должен (и будешь) прокручиваться. И даже ничего не сломали в плане юзабилити, пользователю понятно, что там внутри прокручивается список, т.к. есть соответствующая полоса прокрутки.
4 - Что дальше?
Дальше хотелось бы добавить оставшиеся вещи, в той очередности как я их вижу сейчас:
Сохранение результатов в свой собственный список + назначение названия. Например, хлеб в пятерке и в ашане;
Сравнение показателей по выбору их из истории, или из сохраненного списка;
Смена валюты через настройки, т.к. приложение опубликовано в 15 странах.
Публикую ссылки без зазрения совести, так как денег не прошу, а приложение бесплатное, каковым и останется. Ссыль на сайт опционально, для потенциальных вопросов по андроиду, предложений и всего такого.
Приложение “Радар.НФ”, разработанное Народным фронтом для экстренного реагирования на замеченные вражеские беспилотники или диверсионные группы, помогло специальным службам сбить уже пять БПЛА противника. Благодаря оперативно поступившей от пользователей приложения информации удалось сбить три БПЛА в Брянской области, ещё два – в Курской.
Михаил из Брянской области уже второй раз видит ночью вражеский беспилотник. В первый раз у него не было приложения “Радар.НФ” и он не смог оперативно передать информацию об опасности, теперь Михаил скачал приложение и успел зафиксировать БПЛА. Это решение и быстрая реакция на пролетающий беспилотник в этот раз помогли предотвратить угрозу и спасти человеческие жизни.
На сегодняшний день “Радар.НФ” скачали уже более 310 тысяч неравнодушных россиян. Они взяли на себя ответственность помогать спецслужбам защищать наше мирное небо и жизни людей от террористических атак киевского режима. Народный фронт ежедневно получает десятки обращений, которые затем обрабатываются и передаются профильным ведомствам.
“Чем больше людей скачают приложение, тем выше будет плотность покрытия и тем оперативней будет поступать информация о БПЛА военным. Хочу ещё раз сказать спасибо всем, кто уже установил “Радар.НФ”, попросить всех сограждан проявлять бдительность, устанавливать приложение, это позволит нам всем спать спокойно”, – рассказал руководитель Исполкома Народного фронта Михаил Кузнецов.
“Последняя видимая в инфополе атака была на этой неделе, и один из БПЛА противника был ликвидирован благодаря сигналу, поступившему из приложения “Радар.НФ”. Мы гордимся тем, что помогли и помогаем нашему обществу и нашей стране защищать мирных граждан”, – отметил представитель Народного фронта, руководитель проекта разработки приложения “Радар.НФ” Михаил Камышев.
Больше всего обращений поступает из Белгородской области, на втором месте – Московская область, на третьем – Москва, замыкают пятёрку регионов с самым большим количеством обращений Ростовская область и Крым.
Лилия Самохина, тренер по парусному спорту из спортивной школы олимпийского резерва № 1 города Севастополя, часто выходит в море и имеет опыт оповещения о неопознанных объектах через радиостанцию. После установки приложения “Радар.НФ” у неё появился дополнительный способ информирования специальных служб о потенциальных угрозах. Этот инструмент стал ключевым для обеспечения безопасности её команды и других моряков. Во время детских соревнований Лилия особенно внимательна к безопасности, приложение "Радар.НФ" всегда наготове, чтобы оперативно реагировать на возможные угрозы.
Константин Картушин, заправщик на АЗС в Крыму, высоко ценит приложение “Радар.НФ”, он считает его особенно нужным во время ночных и утренних смен, когда риск незаметного приближения беспилотников увеличивается. Своевременное реагирование важно не только для его личной безопасности, но и для защиты коллег и клиентов АЗС.
Установила приложение и Елена Полуянова, мать семерых детей из Москвы. Дети проводят большую часть времени в городе – в школе, на дополнительных занятиях, в секциях. Теперь в случае обнаружения беспилотника Елена может быстро сообщить об этом компетентным органам и обезопасить не только себя и соседей, но и своих детей.
С 13 сентября в приложении появилось обновление – теперь можно отправлять тестовый сигнал и добавлять комментарии к фотографиям. Обновление стало ответом на предложения и отзывы пользователей. В ноябре разработчики представили новую версию приложения, в ней доступна функция калибровки компаса – пользователь при низком или среднем уровне работы компаса сможет её произвести самостоятельно. Также в приложении теперь можно указать регион проживания для возможности информирования пользователя об актуальных событиях. Обновлённая версия приложения уже доступна в RuStore.