Архив рубрики: Кодинг

Уроки по созданию приложений

Сборка и публикация приложений с помощью Codemagic CI/CD

Введение Разработка мобильных приложений состоит из нескольких частей, одними из которых являются сборка APK-файла (или AAB) и публикация его в магазинах приложений. И если для небольших приложений эти процессы могут занимать пару минут, то чем больше становится приложение, тем больше времени разработчики тратят на сборку. Даже использование различных средств для ускорения сборки и анализ проблемных… Читать далее »

Сбор и анализ ошибок в приложениях с помощью Tracer

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

HTML с кликабельными ссылками и выделением текста в TextView

Когда вы хотите нажать на ссылку внутри TextView, не перенаправляя её во внешний браузер, или установить Spannable с HTML в TextView, то в большинстве случаев достаточно кастомизировать LinkMovementMethod, чтобы сделать ссылку кликабельной, и затем установить его в TextView. setMovementMethod(LinkMovementMethod.getInctance()); Но LinkMovementMethod по умолчанию не поддерживает выделение текста, поэтому придётся переопределить несколько методов, чтобы добиться выделения… Читать далее »

Dispatchers.Unconfined и почему вам на самом деле нужен EmptyCoroutineContext

Dispatchers.Unconfined является одним из встроенных CoroutineDispatchers, входящих в kotlinx.coroutines. Он отличается от других встроенных диспетчеров тем, что не опирается на какой-то конкретный пул потоков. Вместо этого Dispatchers.Unconfined спроектирован так, чтобы никогда не менять поток при входе в его контекст (это называется “диспетчеризацией”). В этом легко убедиться, если посмотреть на его упрощённую реализацию ниже: object Unconfined… Читать далее »

Советы по обработке Insets для обеспечения edge-to-edge на Android 15

Перевод статьи от Android Developers. Согласно внутреннему исследованию Google, пользователи предпочитают экраны edge-to-edge, а не edge-to-edge, как для навигации жестами, так и для навигации тремя кнопками. Рисунок 1. Сверху или слева: приложение edge-to-edge. Фон приложения прорисовывается под строкой состояния сверху и строкой навигации снизу. Снизу или справа: приложение, которое не поддерживает edge-to-edge. Фон и содержимое… Читать далее »

Установка и настройка Java в Arch/Artix Linux

Проверка установленной java java -version Пример : ➜ ~ java -version openjdk version “22.0.1” 2024-04-16 OpenJDK Runtime Environment (build 22.0.1+8) OpenJDK 64-Bit Server VM (build 22.0.1+8, mixed mode, sharing) ➜ ~ Проверка статуса в системе по-умолчанию : archlinux-java help Пример : ~ archlinux-java status Available Java environments: java-22-openjdk (default) Установка нужной переменной окружения archlinux-java set… Читать далее »

Многопоточность в Android: тогда и сейчас

План Введение Асинхронность и многопоточность Потоки в Android Thread и Runnable Looper и Handler HandlerThread AsyncTask Loader и LoaderManager Executor RxJava Kotlin Coroutines Заключение Введение Исторически сложилось, что разработчик пишет последовательный код. Программа выполняет такой код строчка за строчкой в соответствии с написанным. То есть, когда вызывается какая-либо функция, которая выполняет длительную операцию, то программа… Читать далее »

SplashScreen Compat: единообразие заставок

Говорят, что первое впечатление – самое важное. В отношении мобильных приложений, первое впечатление создаётся с помощью экранов-заставок. Однако заставки на Android с самого начала имели проблемы. В Android очень много API, позволяющих выполнять те или иные задачи, но в случае с экранами-заставками API для их создания не было. В результате приложения реализовывали свои заставки по-разному,… Читать далее »

Анимируем приложение с помощью Lottie

Красивый внешний вид мобильного приложения является таким же важным аспектом, как и его функционал, поскольку пользователь при запуске в первую очередь видит дизайн и интерфейс, а затем всё остальное. В создании хорошего дизайна используются самые разные средства, и одним из таких средств является анимация. С её помощью можно отобразить  происходящие в приложении действия, подсказать пользователю,… Читать далее »

Получаем разрешение MANAGE_EXTERNAL_STORAGE для приложения

Безопасность данных в операционной системе является очень важной задачей, и Android здесь не является исключением. Так, Google в Android 10 добавили новый способ обеспечения безопасности, называемый хранилищем с ограниченной областью видимости (Scoped storage). До Android 10 всё работало достаточно просто: приложение запрашивало доступ к хранилищу, используя одно из разрешений (WRITE_EXTERNAL_STORAGE либо READ_EXTERNAL_STORAGE), и, после того… Читать далее »