Как стать автором
Обновить
241.98

Разработка под Android *

Пишем под самую популярную мобильную ОС

Сначала показывать
Порог рейтинга
Уровень сложности

Дублирование кода и неконсистентность дизайна: ищем решение

Время на прочтение10 мин
Количество просмотров4.9K

Првиет! Меня зовут Игорь Дубровин, я Android-разработчик в SuperJob. Давно хотел поднять тему неконсистентности дизайна в приложении, поговорить о проблеме отсутствия единого стиля. Представьте: вы открываете приложение с вакансиями и на разных экранах видите предложения о работе в разном дизайне – в поисковой выдаче одно, а в ленте избранного немного другое. По факту блоки могут иметь совсем незначительные отличия, но пользователь все равно начинает пугаться. Почему? Все просто. Он привык к единому внешнему виду элементов экрана.

Есть несколько основных причин, почему может сбиваться заданный стиль. Предлагаю рассмотреть подходы, которые мы использовали в SuperJob. Заглядывай под кат!

Читать далее
Всего голосов 22: ↑22 и ↓0+22
Комментарии1

Уместить все ЦОДы и облака в карман инженера за счет мобильного «Сервисдеска»

Время на прочтение7 мин
Количество просмотров1.7K

Привет! На связи Алексей Волков, и я опять про «Сервисдеск» в DataLine. На сей раз покажу его мобильную реинкарнацию.

Три года назад мы создали десктопную систему для работы с заявками в техподдержку и дали ей говорящее название «Сервисдеск». Сейчас это решение работает во всех дата-центрах объединенной команды DataLine и «Ростелеком-ЦОД» и охватывает около 700 ежедневно активных пользователей. Мобильная версия «Сервисдеска» была лишь вопросом времени: доступность любых внутренних систем с портативных устройств сразу ускоряет цикл обработки запросов. А для клиентских заявок в техподдержку это особенно важно.

Под катом — краткая предыстория разработки мобильного клиента для «Сервисдеска» и демонстрация сценариев его работы.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии3

Укрощение feature-флагов

Время на прочтение21 мин
Количество просмотров7.4K

Всем привет! Меня зовут Паша Стрельченко, и я — Android-разработчик в hh.ru. В этой статье расскажу об укрощении feature-флагов. Если больше нравится аудиовизуальный формат, его можно найти на нашем youtube-канале. В статье я расскажу чуть больше технических подробностей, чем в видео, так что должно получиться интересно.

Читать далее
Всего голосов 19: ↑18 и ↓1+17
Комментарии10

База данных на SharedPreferences — Android Kotlin

Время на прочтение7 мин
Количество просмотров15K
image

Для хранения большого количества информации в Android используется DataBase (SQLite, FireBase и т. п.), а для простого хранения настроек — SharedPreferences. Вопрос, можно ли использовать SharedPreferences как своего рода Базу Данных и как это сделать?
Статья написана об учебном проекте, повторять такое на проде нельзя, как минимум это небезопасно. Намеренно используется не самая лучшая реализация тех или иных вещей, чтобы можно было подискутировать в комментариях.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии3

Истории

Jetpack Compose — как легко построить UI на Android

Время на прочтение4 мин
Количество просмотров14K

В июле этого года вместе с Android Studio Arctic Fox вышла одна из долгожданных библиотек — Jetpack Compose. Она позволяет создавать пользовательский интерфейс в декларативном стиле и обещает быть революцией в построении UI.

Разбираемся, так ли это на самом деле, какие у библиотеки преимущества и недостатки. Подробности — в статье.

Читать далее
Всего голосов 51: ↑46 и ↓5+41
Комментарии15

Сервис отложенных запросов для Retrofit на Android

Время на прочтение11 мин
Количество просмотров5.1K

Как Вы обрабатываете отсутствие доступа в интернет в своем приложении? Показываете сообщение "Нет интернета, попробуйте позже"? Допустим случай, когда мы хотим гарантировать выполнение сетевого запроса пользователя, а не заставлять его искать интернет и снова повторять не удавшиеся запросы. Давайте создадим такую ситуацию и научимся ее обрабатывать. Реализованный пример, как обычно можно скачать по ссылке на GitHub в конце статьи!

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии2

Flutter: о разработке плагинов с интерфейсом ActivityAware

Время на прочтение6 мин
Количество просмотров4.8K


В былые времена клиенты присылали цветные изображения документов со сканера по емейлу. Кто ленился или не мог — отправлял свой загранник по почте. С этим неплохо справлялось решение от ABBYY. Потом появились телефоны и люди стали присылать фотографии паспортов. ABBYY сломался. Перешли на решение от Smart Engines и даже с фотографиями, посланными через WhatsApp особых проблем не было. Но потом пошли умные мобилки с включенными по умолчанию водяными знаками типа «Xiaomi 9T» часто перекрывающими важнейшую часть паспорта. Вдобавок к этому наличие в кадре на фотографии пальцев и бликов тормозило общение с клиентом.

Примеры паспортов, непригодных к распознаванию

Когда паспорт распознается в видеопотоке на телефоне клиента, то этой проблемы так остро не стоит. Почему?

  1. Мобильное ядро отображает рамку документа в процессе распознавания, не просто маску поверх видео, а именно рамку документа, находящегося в руках. По моим ощущениям, это дает человеку понимание, где не должно быть его пальцев. Вообще, это интересная тема для отдельного исследования.
  2. Система использует механизм сатурации данными и готова выдать результат только после определенной уверенности в них.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии7

Дайджест интересных материалов для мобильного разработчика #412 (20 — 26 сентября)

Время на прочтение3 мин
Количество просмотров2.9K
В этой подборке 0-day уязвимости в iOS и скорость сборки для нее же, StoreKit 2 и Swift 5.5, тестовая ферма и правильная валидация для Android, битва снифферов, игры со шрифтами, подготовка к FAANG, релизные циклы и многое другое!

Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии0

Подключение SignalR для Android на Kotlin

Время на прочтение5 мин
Количество просмотров6.3K

SignalR предоставляет один из самых простых и быстрых способов создания приложений реального времени на веб, настольных и мобильных платформах. Изначально Signal был создан Microsoft для приложений .Net. Рассмотрим, как можно реализовать данный механизм в мобильном приложении под андроид.

Читать далее
Всего голосов 11: ↑8 и ↓3+5
Комментарии2

Мой рецепт MVI в Android

Время на прочтение6 мин
Количество просмотров14K

Как известно, MVI строится на основе трех компонентов - модели, намерения (действия) и состояния экрана. Логика приложения диктуется пользователем, например, он хочет загрузить картинку в высоком разрешении, и различными внешними эффектами (далее - side-effects), например, внезапной потерей соединения.

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

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии6

In-app purchases: продвинутые механики работы с покупками на Android и iOS

Время на прочтение6 мин
Количество просмотров3.9K

Привет, я Влад, core разработчик Adapty SDK для Android. Это заключительная статья из серии туториалов по внедрению внутренних покупок в приложениях Google Play и App Store.

В заключительной статье мы решили не замыкаться на одной платформе, а рассказать о продвинутых практиках работы с покупками на iOS и Android и показать, как сервер расширяет наши возможности при работе с подписками и какие преимущества даёт.

Читать далее
Рейтинг0
Комментарии0

Тестовая ферма из Android-устройств: как собрать, отладить и не взорвать офис

Время на прочтение11 мин
Количество просмотров12K


У нас был небольшой бюджет и большие проблемы с рутинным тестированием в match3-игре, у которой накопилось более 1500 уровней. А вот чего у нас не было, так это идеально подходящего коробочного решения, работающего на лету и без пересборок. Поэтому мы нагородили собственную ферму с высаженной грядкой из десятка Xiaomi, отправкой статистики, отчетами в Slack, блекджеком и коровой.

Я Павел Щеваев, CTO студии BIT.GAMES, которая является частью международного игрового бренда MY.GAMES. Вы можете знать нас по RPG «Гильдия Героев», а ваши мамы — по «Домовятам» в Одноклассниках. Да, это были мы. :) Но сегодня речь пойдет о нашем новом проекте Storyngton Hall. Это головоломка «три в ряд» с сюжетом, по которому красивые леди разгадывают загадки, декорируют комнаты, примеряют платья, устраивают балы, и, в конце концов, выходят замуж.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии14

Android RecyclerView с использованием котлиновских sealed классов

Время на прочтение7 мин
Количество просмотров9.7K

RecyclerView — это один из самых лучших инструментов для отображения больших списков на Android. Как разработчики, вы, скорее всего понимаете о чем я говорю. У нас есть много дополнительных фич, таких как шаблоны вью холдеров, сложная анимация, Diff-Utils колбек для повышения производительности и т. д. Такие приложения, как WhatsApp и Gmail, используют RecyclerView для отображения бесконечного количества сообщений.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии1

Ближайшие события

Правильная валидация в Android

Время на прочтение11 мин
Количество просмотров7K

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

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Jetpack Microbenchmark — тестируем производительность кода

Время на прочтение6 мин
Количество просмотров4K

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

В этой статье расскажу, как устроена и работает библиотека Microbenchmark от Google, а также покажу примеры использования. С ней можно не только оценить производительность, но и решить спорные ситуации на код-ревью.

Читать далее
Всего голосов 43: ↑42 и ↓1+41
Комментарии0

Чему я научился делая игры на LibGDX

Время на прочтение12 мин
Количество просмотров18K

Привет, Хабр! 👋 В этом топике хочу поговорить о незаслуженно забытом, бесплатном фреймворке для разработки кросс-платформенных игр - LibGDX. Поделиться секретами своей кухни и решениями, которые я использую при разработке своих игр-головоломок. Ворнинг! Много кода под катом.

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии13

Дайджест интересных материалов для мобильного разработчика #411 (13 — 19 сентября)

Время на прочтение4 мин
Количество просмотров2.7K
В новом дайжесте новые устройства Apple и автоматизация повышения качества кода, ускорение сборки и Jetpack для Wear OS, 16 советов по UX и UI дизайну, количество приложений на Flutter и React Native, ATT-согласие и многое другое!

Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Kotlin Native. Работаем с новой моделью памяти

Время на прочтение6 мин
Количество просмотров8.3K

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Продолжаем рассматривать способы многопоточный работы в Kotlin Native. В предыдущих статьях мы уже рассмотрели существующие способы работы с многопоточностью с корутинами и без, и что делать с имеющимися болями. Теперь поговорим о новой модели управления памятью, которая появилась совсем недавно.

31 августа компания JetBrains представили превью новой модели управления памятью в Kotlin Native. Основной упор команда разработчиков сделала на безопасность шаринга между потоками, устранение утечек памяти и освобождение нас от использования специальных аннотаций. Также доработка коснулась Coroutines, и теперь можно без опаски переключаться между контекстами корутин без заморозки. Обновления подхватили и Ktor:  

Итак, что же нового появится в версии Kotlin 1.6.0-M1-139: 
1. Заявлено, что мы можем убрать все freeze() блоки (в том числе и во всех фоновых Worker), и переключаться между контекстами и потоками без каких-либо проблем. 

2.Использование AtomicReference или FreezableAtomicReference не приводит к утечкам памяти.

3.При работе с глобальными константами не нужно теперь использовать SharedImmutable.

4.При работе с Worker.execute producer больше не требует возвращать изолированный подграф объектов. 

Однако есть и нюансы:

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

8 распространенных ошибок при разработке Android-приложений

Время на прочтение6 мин
Количество просмотров7.7K

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

Читать далее
Всего голосов 11: ↑8 и ↓3+5
Комментарии1

Загружаемые изображения для Jetpack Compose с использованием Glide, Coil и Fresco

Время на прочтение7 мин
Количество просмотров9K

Новый современный набор инструментов пользовательского интерфейса Jetpack Compose был анонсирован компанией Google более года назад, и, наконец, в июле была выпущена стабильная версия 1.0. Также многие компании, такие как Twitter, lyft, Square, уже адаптировали Jetpack Compose на своих производственных уровнях, потому что он очень интуитивный, мощный и упрощает всю структуру пользовательского интерфейса, если правильно его использовать. Эта новая парадигма структуры пользовательского интерфейса поменяет в дальнейшем очень многое, также нам придется приложить еще немало усилий для миграции предыдущих вещей, связанных с пользовательским интерфейсом, таких как загрузка изображений из Url. 

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии0