Обновить
128K+

Android *

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

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

Реализация прогресс бара при отправке или загрузке файлов

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели5.2K

Появился вопрос о том, как можно отследить статус отправки или загрузки файлов с сервера? Эта статья поможет найти решение, а также подобрать подходящий для вас вариант.

Читать далее

В каких случаях использовать функцию derivedStateOf из Jetpack Compose

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели15K

derivedStateOf { ... }

derivedStateOf - это функция, которая из исходных объектов State формирует производный State. Основной смысл применения функции derivedStateOf - понизить частоту изменения исходного State, тем самым избавиться от ненужных рекомпозиций.

Лямбда-выражение, которое передается в derivedStateOf, выполняется каждый раз, когда изменяется любой из входных объектов State, и результат используется для обновления значения производного State. Важно понимать, что лямбда-выражение будет вызываться повторно только если изменится свойство value объекта State и чтение этого свойства происходит в этой лямбде. Изменение захваченных переменных другого типа не приведет к повторному вызову лямбда-выражения.

У объекта State может читаться свойство value в одной или нескольких compose-функциях. Через объект MutableState можно менять свойство value в callback'ах compose-функций или где-то еще за пределами compose, например во ViewModel'и. Если свойство изменилось, то в процессе построения следующего кадра произойдет рекомпозиция (повторный вызов) тех compose-функций, где это свойство читается. Таким образом частота изменения объекта MutableState определяет частоту рекомпозиций, но не чаще чем системный Frame rate, это примерно 60Hz, то есть 60 раз в секунду. Когда изменится State, Compose обновит UI при построении следующего кадра.

Когда частота изменения State слишком высокая, или другими словами есть некоторая последовательность изменений value State'а, при которой не нужно обновлять UI пускай даже значения разные, а следовательно не нужно совершать рекомпозицию, в этих случаях нужно использовать derivedStateOf. derivedStateOf определяет производный объект State от одного или нескольких других объектов State. Производный State должен обобщать исходные объекты State, то есть исходное множество значений State должно делиться на подмножества, и каждое такое подмножество будет соответствовать значению из производного множества. Изменения исходного State не всегда будут приводить к изменению производного State, таким образом понижается частота рекомпозиций.

Читать далее

ChatGPT и чтение книг в оригинале

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели12K

Представьте приложение, в которое вы можете загрузить любую книгу на иностранном языке. При чтении вы будете нажимать на любое незнакомое слово, а приложение будет вам выдавать не кучу переводов из словаря, а предложит перевод, который соответствует контексту. А при переводе устойчивого выражение приложение не просто переведет его, а предложит вам объяснение этой фразы, привязанное к контексту. Ниже я покажу как оно работает.

Читать далее

Перформанс 2ГИС для Android

Время на прочтение7 мин
Охват и читатели5.9K

Каждое большое приложение однажды сталкивается с задачей — увеличить скорость запуска. Не обошла она и приложение 2ГИС на Android. Расскажу, как команда тестирования искала причины медленного запуска.

Читать далее

Мобильная разработка за неделю #488 (8 — 14 мая)

Время на прочтение3 мин
Охват и читатели2.7K
В нашем послепраздничном дайджесте новости с I/O 2023 и тёмная сторона Mac App Store, положение SwiftUI и подготовка к Swift 6, разбор Android 13, самое чистое проектирование, отказ от микросервисов в Amazon, заработок чатботов и многое другое.

В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!

Читать дальше →

Jetpack Compose: Expandable Text

Время на прочтение5 мин
Охват и читатели4.8K

На протяжении нескольких последних лет мобильная разработка движется в сторону декларативного пользовательского интерфейса. Кто-то начал раньше, кто-то – позже. Большой толчок развитию этого направления сообщество Android разработчиков получило благодаря языку программирования Kotlin, который отлично раскрывает данную концепцию. В 2019 Google представила свой фреймворк для создания декларативного UI: Jetpack Compose.

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

Читать далее

Четыре платформы — один код. Что такое Compose Multiplatform?

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели29K
image

Разработчики давно грезили о возможности писать кроссплатформенный код — такой, который запускался и работал бы одинаково в любой операционной системе любой архитектуры. Сегодня принципом «Write once, run anywhere», когда-то прогремевшим в связи с появлением языка Java, трудно кого-либо удивить. И все же есть ниша, в которой не так много кроссплатформенных технологий: это UI-разработка.

Не будет преувеличением сказать, что на сегодняшний день есть только два UI-фреймворка, которые позволяют запускать один и тот же UI на разных платформах и широко представлены на рынке: React Native и Flutter. Казалось бы, чего еще желать? Сразу две технологии предоставляют возможность шарить UI-фичи между платформами и прекрасно с этим справляются. Но эта статья — не о них, а об их младшем собрате, удобном и мощном инструменте мобильной и десктопной разработки — Compose Multiplatform.
Читать дальше →

Picture in Picture Mode в android. Показываем видео в мини-окне

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.2K

Picture in Picture Mode - удобный способ отображения контента в мини-окне.
Хорошо подойдет для фонового просмотра видео, звонков, gps-навигаторов.

В статье рассматривается настройка , отображение и взаимодействие с ui, а также работа с backstack'ом activity внутри PiP-mode.

Читать далее

Разбор Android 13 для разработчиков

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели19K

Обзор всех изменений Android 13, которые пригодится вам знать чтобы протестировать работу приложения с новой версий ОС и узнать какие возможности вам будут полезны, чтобы улучшить ваш продукт, а какие вас заставит использовать Google Play!

Подробности

JavaCard как второй фактор аутентификации в Android-приложении

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели2.9K

Зачем нужна двухфакторная аутентификация? Почему именно JavaCard? Что общего у цифровой безопасности и Волан-де-Морта? Делюсь личным опытом…

Читать далее

Google I/O 2023. Что нового в Kotlin для Android?

Время на прочтение3 мин
Охват и читатели7.7K
image

Всем привет! С вами Анна Жаркова, руководитель группы разработки в ГК Usetech.

И сегодня мы посмотрим на новинки Kotlin для Android, представленные Google в видео «What's new in Kotlin for Android» с Google I/O 2023 (с некоторыми моими комментариями и дополнениями).

В этом году основной фокус делают на следующие пункты:
  • Kotlin Compiler 2.0 (доступен с 2024 года)
  • Kotlin DSL скрипты build.gradle по умолчанию
  • KSP как приоритетный процессинг аннотаций
  • Kotlin Multiplatform (неожиданно)

Также внимание отводится Jetpack Compose и его улучшениям, но подробнее ознакомиться стоит в тематических видео.

Итак, начнем с компилятора Kotlin.
Читать дальше →

Как Kinect только Pinect

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели3.8K

На мундиале 2018 году в России. Футбольные болельщики со всего мира могли бы увидеть и поиграть в наш отечественный игровой контроллер для писуаров. Не хочется писать по каким организационным причинам этого не случилось. Здесь я хочу рассказать как происходила разработка этого нестандартного игрового аппарата.

Как оно было...

«Внешняя» навигация в многомодульном проекте на Kotlin

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели10K

Привет, Хабр! Я Дмитрий Воронов из Doubletapp, в этой статье расскажу, как мы делали навигацию в Яндекс Путешествиях. С навигацией в Android, кажется, давно все ясно: бери Jetpack Navigation, читай официальную документацию и следуй ей — и все получится. Если рекомендованная библиотека не подходит — берешь Fragment Manager, прописываешь собственную реализацию и идешь хвастаться коллегам. Если писать свою реализацию нет желания, а официальная библиотека не соответствует модным веяниям — дополняешь свое резюме умением работать с Cicerone. Если твои вкусы специфичны — почему бы не удивить людей неожиданным добавлением в проект Alligator?

В одном коротком абзаце удалось обозначить сразу 4 варианта реализации навигации и, казалось бы, в чем вопрос? Каждый выбирает для своего проекта подходящий ему вариант. Все так, но ровно до того момента, пока не возникает необходимость «поделиться» частью приложения — интегрироваться в другое приложение, и там, как оказывается, другая реализация навигации. И здесь начинается: «Что будем делать? Попробуем написать мост? А может, лучше перепишем навигацию?» 

На этапе проектирования лучше сразу уточнить возможность дальнейшей интеграции с другими приложениями и заранее к этому подготовиться. Помимо всего прочего, нужно подготовить и навигацию, и сделать ее «внешней» — одно из возможных решений этой задачи.

Что такое «внешняя» навигация?
Как это делается?
Реализуем модуль навигации
Примеры реализации

Читать далее

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

Про тестирование мобильных приложений. Часть 3. Cквозное (UI, e2e) тестирование

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.3K

Ранее мы с вами познакомились с пирамидой тестирования и ее основанием. В данной же статье предлагаю перейти к вершине.

Читать далее

Как я получил сертификат Associate Android Developer

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели6.2K

Хотите, чтобы Google официально подтвердил ваши скиллы разработчика Android? Все не так уж трудно: рассказываю, как это делается…

Читать далее

PostgreSQL, Spring Framework и Android для начинающего разработчика

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели19K

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

В статье будут затронуты такие важные темы, как теория баз данных, реляционная база данных PostgreSQL, Spring Framework и Android разработка. Также будет рассмотрен базовый, не очень сложный пример, который поможет разобраться во всех этих темах и "потрогать" их руками.

Статья предназначена для начинающего разработчика, но имеющего базовые знания о разработке программного обеспечения и языках программирования Java и Kotlin.

Все материалы и исходный код можно найти здесь.

Читать далее

Мобильная разработка за неделю #487 (1 — 7 мая)

Время на прочтение3 мин
Охват и читатели3K
В новом выпуске обучение iOS-разработке и цена управления памятью, правила дизайна и гниение кода, бэкенд, мобилки, ремесло, гвозди, зоопарк трансформеров и многое другое.

В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!

Читать дальше →

Как мы разрабатываем SDK для RuStore

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6K

2022 год оставил разработчиков из России без возможности заработка в привычных сторах, а также дал толчок развитию альтернативных способов монетизации приложений. Менеджер проекта команды SDK магазина приложений RuStore Александр Лукашенко рассказал, как удаётся разрабатывать инструменты для оплаты, push-уведомлений, получения оценок и отзывов внутри российского магазина приложений.

Читать далее

Принять и отдать: как мы совершенствовали Wi-Fi сигнал

Время на прочтение7 мин
Охват и читатели7.2K

Меня зовут Евгений Торчинский, практически всю свою жизнь я работаю с технологиями. Сейчас я руковожу Movix Lab — мы уже много лет занимаемся железом, софтом и работаем с технологиями искусственного интеллекта. 

Сегодня я и мои коллеги поделимся опытом в подборе параметров и способов тестирования качества Wi-Fi сигнала в смарт-устройствах. Поговорим также об особенностях конструирования антенн и их эволюции на примере наших устройств — ранней линуксовой ТВ-приставки и новой компактной Movix Go на Android TV. Проектирование последнего в силу сразу нескольких конструктивных особенностей стало для нас настоящим испытанием, но обо всем по порядку. 

Отмечу, что этой статьи (как и самих приставок, о которых я здесь рассказываю) не было бы без команды «Девайсов» Movix Lab. Спасибо Павлу Мальцеву и Артему Егорову! 

Читать далее

Автоматизация публикации Android приложений в Google Play и Huawei AppGallery — инструкция от А до Я

Уровень сложностиСложный
Время на прочтение19 мин
Охват и читатели20K

Всё еще публикуете релизы Android приложений вручную? Почитайте наше подробное руководство как полностью автоматизировать публикацию Android приложений в Google Play и Huawei AppStore через Gradle и CI/CD. Подробно от А до Я.

Почитать инструкцию