Мобильная разработка – Telegram
Мобильная разработка
13.9K subscribers
854 photos
239 videos
2.95K links
Актуальное по мобильной разработке — Android, iOS, кроссплатформа

Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/oVBP
Download Telegram
Размеры экрана iPhone 14

iPhone 14 показали 7 сентября, а вместе с этим вышли новые размеры экранов на новую линейку. Основные изменения в iPhone 14 Pro — Dynamic Island, который расширяется для отображения уведомлений и действий.

Подробнее: https://useyourloaf.com/blog/iphone-14-screen-sizes/

#ios
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
Что такое edge-to-edge и как работать с WindowInsets

Режим edge-to-edge используется, чтобы отобразить приложение на всей видимой поверхности дисплея. Для реализации нужно изменить цвет системного UI, сделать запрос на отрисовку приложения под заданный UI и устранить визуальные конфликты.

В этой статье рассматривается, как реализовать edge-to-edge с примерами на View и Jectpack Compose:

https://habr.com/ru/company/kts/blog/687310/

#android
👍10
Интеграция Flutter в нативный Android-проект

Если вы хотите делать проект под Android и использовать Flutter, то вам не обойтись без интеграции. Для это нужно создать Flutter-модуль, добавить его в зависимости Gradle и реализовать FlutterActivity, чтобы запустить проект.

Подробные шаги по импорту и реализации — https://tprg.ru/f8z0

#flutter #android
👍12💩2
Шпаргалка по техническому интервью для iOS разработчика

Недавно мы рассказывали о ресурсах для подготовки к собеседованию для Android-разработчика. Если вы готовитесь к интервью на iOS, то этот репозиторий поможет проверить ваши знания по алгоритмам, БД, Objective-C, Swift и другим темам: https://tprg.ru/kTZu

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

https://quizlet.com/serg_tsogtbaatar/folders/ios-interviews/sets

#ios
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
Изучаем Jetpack Compose на примере приложения по поиску собак из приюта

Adopty — это приложение для усыновления собак, созданное на Kotlin для демонстрации пользовательского интерфейса с помощью Jetpack Compose. В нём используются популярные инструменты и лучшие практики Android-разработки. Также начинающие разработчики могут на практике изучить, как работать с Hilt, Retrofit, Accompanist и Coil.

Репозиторий: https://github.com/2307vivek/Adopty

#android
🐳14👍10🔥1😢1
Инструменты для снятия логов в Android и iOS

В этом пошаговом руководстве рассматривается, как:

— перевести устройство в режим отладки и читать логи с помощью Logcat и SDK Platform Tools,
— выгрузить логи с самого устройства, используя Android Debug Bridge,
— установить xCode и использовать инструмент Simulator,
— снимать логи с устройства с помощью раздела Devices and Simulators,
— работать с утилитой iMazing на Windows.

Подробнее: https://tprg.ru/zsZ5

#android #ios
👍6
Серия статей о диплинках на Android

Наверняка вы знакомы с концепцией deeplink — гиперссылка, которая позволяет перенаправить пользователя с одного веб-сайта на конкретную страницу. В мобильных приложениях диплинки работают немного иначе — это URL, который ещё и открывает приложение, если оно установлено на устройстве.

В этой серии статей разбираются типы deeplink, особенности работы с такими ссылками на Android и популярные проблемы, с которыми может столкнуться разработчик, например: URL перестал работать или не открывается в браузерах.

Часть 1: https://tprg.ru/aIJt
Часть 2: https://tprg.ru/OmSz
Часть 3: https://tprg.ru/HRgW

#android
👍7
Реализация гистограммы с помощью SwiftUI Charts в iOS 16

На WWDC 2022 Apple представила SwiftUI Charts — фреймворк для преобразования данных в графики.

В этом пошаговом руководстве показано, как добавить простой шаблон диаграммы и настроить его в приложение на iOS 16:

https://tprg.ru/LjtI

#ios
👍4
Oracle, остановись! Вышла версия Java 19

Java 18 вышла только в марте, а Oracle уже подготовил новый релиз. Какие нового?

— Изменения в Pattern Matching для switch (это уже третье preview) и паттерн записей.
— Ввели новую абстракцию потоков — Virtual Threads. Это легковесные потоки, которые схожи с корутинами.
— Поддержка Linux/RISC-V Port.
— Новый API для Structured Concurrency.
— Векторные API всё ещё в инкубационном статусе.

Больших изменений, которые так обещали, не наблюдается.

#java
👍13💩8🔥2
Дорожная карта для Android-разработчиков на 2022 год

Кроме roadmap, команда Stream выпустила статьи, в которых объясняются концепции, указанные в дорожной карте: компоненты, навигация в приложение, паттерны и т.д.

Почитать гайды и скачать полный roadmap можно здесь:

https://github.com/skydoves/android-developer-roadmap

#android
👎16👍2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Сколько стоит дизайн мобильного приложения?

Белорусская компания провела неофициальное исследование по местному IT-рынку. Задача была получить цену за полный цикл разработки: от веб-дизайна и макетов до приложений на iOS и Android.

Полученные офферы раздели на 3 категории и указали среднюю стоимость проекта:

https://tprg.ru/Hc3K

Если вам интересно узнать о данных в других регионах (Австралия, США, Великобритания и т.д.), то подробнее — в статье: https://tprg.ru/ZERv

#ios #android
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Работа со списками во Flutter-приложениях

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

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

Часть 1: https://habr.com/ru/post/656297/
Часть 2: https://habr.com/ru/post/688864/

#flutter
💩7👍5🤔1
Пример реализации Dynamic Island и ActivityKit

Dynamic Island используется для отображения обновлений в текущей задаче. Некоторым крупным компаниям Apple предоставила инструменты для реализации динамического острова до выпуска официальных API: WhatsApp, Pandora, Amazon Music и другим.

Например, в Spotify с помощью Dynamic Island отображаются элементы управления музыкой, Uber отображает профиль водителя и время прибытия.

Если вам интересно, как реализовать Dynamic Island, то в этом руководстве подробно разбираются ActivityAttributes, Live Activity и сам виджет:

https://tprg.ru/JxwG

Спойлер: Dynamic Island несложно настроить т.к. большую часть работы за нас делает iOS.

#ios
👍3
ExKeyMo — кастомизируем раскладку внешней клавиатуры на Android без root

Существует несколько способов настройки внешней клавиатуры на Android:
— установка сторонней клавиатуры, например, External Keyboard Helper Pro,
— добавление kl или kcm файлов,
— установка приложения, которое позволяет добавить дополнительные клавиатурные раскладки.

Если вы выбрали третий вариант, но нет желания заморачиваться со сборкой, то ExKeyMo может значительно упростить задачу. Это веб-сервис, с помощью которого можно получить готовое Android-приложение со встроенными раскладками. Подробнее об ExKeyM и его реализации — в статье:

https://habr.com/ru/post/689370/

#android
👍3
Сборка на последней версии iOS без обновлений в Xcode

Нет желания обновлять Xcode до последней версии? Автор статьи рассказал о простом способе, как собрать приложение на устройстве, которое работает на последней версии iOS, не обновляя Xcode:

https://tprg.ru/KsOC

Спойлер: решение в два действия

#ios
👍14
Корутины изнутри: как выглядит процесс создания корутин?

Наверняка вы уже знаете, что такое корутины и используется их в проекте, но как они создаются?

В этой статье подробно разбирается процесс создания корутин от launch() до invokeSuspend(), а также анализ байт-кода на указанных примерах:

https://tprg.ru/xUmA

#android #kotlin
👍8
Как загрузить и кэшировать изображение без использования библиотек?

Именно такая задача была задана автору статьи в качестве теста при приёме на работу. Пример решения:

— добавить android.permission.INTERNET в manifest файл и зависимости корутин в проект,
— создать CachingUtil с функциями:
1. getBitmapFromURL, которая загружает изображение с URL-адреса.
2. storeBitmap — эта функция будет кэшировать изображение в виде файла и сохранять его во внутреннем хранилище.
3. loadBitmap — для получения изображения из хранилища.
— реализовать Main Activity, в котором проверяется, существует или нет кэшированное изображение для отображения.

Источник: https://tprg.ru/WsTi

Репозиторий: https://github.com/osamaalek/load-and-caching-image

Как бы вы решили эту задачу?

#android
👍14💩4🤔2
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI Spring — примеры анимаций в SwiftUI

В этом репозитории собраны интересные варианты анимаций Spring, а также примеры их реализации:

https://github.com/GetStream/swiftui-spring-animations

#ios #swiftui
👍7🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Как реализовать всплывающие окна на Flutter карте

Во Flutter есть плагин flutter_map_marker_popup, который позволяет добавлять всплывающие окна на маркеры положения на карте. Также в плагине есть методы для отображения/скрытия всплывающих окон. Marker_popup работает с Flutter_map, поэтому для работы с Яндекс.Карты или Google Maps он не подойдет.

В этой статье рассматривается, как добавить Flutter_map в проект, настроить маркеры и отслеживать нажатие по ним:

https://habr.com/ru/post/689578/

#flutter
👍6❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Какие изменения коснулись системного Back в Android 13?

Начиная с Android 13, метод onBackPressed() считается устаревшим. Одной из главных причин таких изменений стал новый подход «predictive back gesture».

По сути, это жест назад, который показывает превью — куда переходит пользователь перед самим переходом обратно. С учётом нововведений в OnBackPressedDispatcher появился вызов OnBackInvokedCallback.

В этой статье рассматривается, как заменить устаревшую функцию onBackPressed() на OnBackPressedCallback:

https://tprg.ru/4A8N

#android
👍16🤔1💩1