Размеры экрана iPhone 14
iPhone 14 показали 7 сентября, а вместе с этим вышли новые размеры экранов на новую линейку. Основные изменения в iPhone 14 Pro — Dynamic Island, который расширяется для отображения уведомлений и действий.
Подробнее: https://useyourloaf.com/blog/iphone-14-screen-sizes/
#ios
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
Режим 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
Если вы хотите делать проект под 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
Недавно мы рассказывали о ресурсах для подготовки к собеседованию для 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
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
В этом пошаговом руководстве рассматривается, как:
— перевести устройство в режим отладки и читать логи с помощью 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
Наверняка вы знакомы с концепцией 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
На 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
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
Кроме 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
Белорусская компания провела неофициальное исследование по местному 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
Создать простой статический список в приложение несложно, но задача усложняется, если нужно реализовать список из самостоятельно обновляемых записей или с ссылками на другие записи.
В этой статье рассматривается, как осуществлять в списках функции асинхронной загрузки, фильтрации и актуализации данных. Также автор показывает на примере собственной библиотеки, как можно упростить создание контроллеров для управления списками:
Часть 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
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
Существует несколько способов настройки внешней клавиатуры на 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
Нет желания обновлять Xcode до последней версии? Автор статьи рассказал о простом способе, как собрать приложение на устройстве, которое работает на последней версии iOS, не обновляя Xcode:
https://tprg.ru/KsOC
Спойлер: решение в два действия
#ios
👍14
Корутины изнутри: как выглядит процесс создания корутин?
Наверняка вы уже знаете, что такое корутины и используется их в проекте, но как они создаются?
В этой статье подробно разбирается процесс создания корутин от launch() до invokeSuspend(), а также анализ байт-кода на указанных примерах:
https://tprg.ru/xUmA
#android #kotlin
Наверняка вы уже знаете, что такое корутины и используется их в проекте, но как они создаются?
В этой статье подробно разбирается процесс создания корутин от 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
Именно такая задача была задана автору статьи в качестве теста при приёме на работу. Пример решения:
— добавить 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
В этом репозитории собраны интересные варианты анимаций 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
Во 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
Начиная с Android 13, метод onBackPressed() считается устаревшим. Одной из главных причин таких изменений стал новый подход «predictive back gesture».
По сути, это жест назад, который показывает превью — куда переходит пользователь перед самим переходом обратно. С учётом нововведений в OnBackPressedDispatcher появился вызов OnBackInvokedCallback.
В этой статье рассматривается, как заменить устаревшую функцию onBackPressed() на OnBackPressedCallback:
https://tprg.ru/4A8N
#android
👍16🤔1💩1