Compose Rich Editor - текстовый редактор для Jetpack Compose и Compose Multiplatform, полностью настраиваемый и поддерживающие общие функции ввода текста. Основные фичи - мультиплатформенность, простота в использовании (API Compose Rich Editor использует возможности языка Kotlin для простоты и минимального количества шаблонного кода), WYSIWYG.
Compose Rich Editor на GitHub: https://github.com/MohamedRejeb/Compose-Rich-Editor
Платформа: Android
⭐️: 764
Compose Rich Editor на GitHub: https://github.com/MohamedRejeb/Compose-Rich-Editor
Платформа: Android
⭐️: 764
Один «подводный камень» в Jetpack Compose и как его можно исправить
В этой небольшой статье я расскажу об одном подводном камне, с которым вы вполне можете столкнуться при использовании Jetpack Compose. Я также объясню, как его обойти. Это связано с распространением касаний, макетами и Поверхностью в composable.
Статья: https://apptractor.ru/info/articles/odin-podvodnyy-kamen-v-jetpack-compose-i-kak-ego-mozhno-ispravit.html
Платформа: Android
В этой небольшой статье я расскажу об одном подводном камне, с которым вы вполне можете столкнуться при использовании Jetpack Compose. Я также объясню, как его обойти. Это связано с распространением касаний, макетами и Поверхностью в composable.
Статья: https://apptractor.ru/info/articles/odin-podvodnyy-kamen-v-jetpack-compose-i-kak-ego-mozhno-ispravit.html
Платформа: Android
Оптимизация приложения для сетевой доступности
Доступность сети — важный аспект для приложений, полагающихся на сетевые возможности. Ваши пользователи не всегда будут иметь хорошее подключение к Интернету, поэтому оптимизация приложения для плохих сетевых условий очень важна.
Мы можем использовать несколько методов для соответствующей оптимизации нашего приложения, но очень важно знать о распространенных ошибках, когда вы это делаете. После написания нескольких сетевых фреймворков и десятков приложений, пришло время поделиться с вами моими лучшими практиками, чтобы предотвратить ошибки, которые я совершил в прошлом.
Статья: https://apptractor.ru/info/articles/optimizatsiya-prilozheniya-dlya-setevoy-dostupnosti.html
Платформа: iOS
Доступность сети — важный аспект для приложений, полагающихся на сетевые возможности. Ваши пользователи не всегда будут иметь хорошее подключение к Интернету, поэтому оптимизация приложения для плохих сетевых условий очень важна.
Мы можем использовать несколько методов для соответствующей оптимизации нашего приложения, но очень важно знать о распространенных ошибках, когда вы это делаете. После написания нескольких сетевых фреймворков и десятков приложений, пришло время поделиться с вами моими лучшими практиками, чтобы предотвратить ошибки, которые я совершил в прошлом.
Статья: https://apptractor.ru/info/articles/optimizatsiya-prilozheniya-dlya-setevoy-dostupnosti.html
Платформа: iOS
Протокол Identifiable в SwiftUI с примерами
Протокол Identifiable позволяет выполнять итерации по коллекции объектов внутри ForEach в SwiftUI. Хотя этот протокол выглядит простым и имеет всего одно свойство, в нем легко допустить распространенную ошибку, которая может привести к неожиданному поведению вашего представления.
Статья: https://apptractor.ru/info/articles/identifiable.html
Платформа: iOS
Протокол Identifiable позволяет выполнять итерации по коллекции объектов внутри ForEach в SwiftUI. Хотя этот протокол выглядит простым и имеет всего одно свойство, в нем легко допустить распространенную ошибку, которая может привести к неожиданному поведению вашего представления.
Статья: https://apptractor.ru/info/articles/identifiable.html
Платформа: iOS
isowords - игра для iOS по поиску слов на кубиках. Надо соединять буквы, чтобы составить слова, чем длиннее, тем лучше, а когда буква будет использована в третий раз, кубик исчезнет, открыв новые буквы внутри. isowords - это большое и сложное приложение, построенное полностью на Swift. Логика iOS-клиента построена на Composable Architecture, а пользовательский интерфейс - в основном на SwiftUI с небольшим количеством SceneKit. Сервер также построен на Swift с использованием экспериментальных библиотек.
isowords на GitHub: https://github.com/pointfreeco/isowords
Платформа: iOS
⭐️: 2.5K
isowords на GitHub: https://github.com/pointfreeco/isowords
Платформа: iOS
⭐️: 2.5K
Сам себе экосистема. Часть 4: как я реализовал клиент Telegram на Android-смартфоне 14-летней давности
Я решил реализовать клиент Telegram на смартфоне 14-летней давности на базе официальной реализации MTProto от команды Telegram — TDLib. Сегодня мы с вами: узнаем новые причины мотивации вернуть в строй смартфоны прошлых лет, напишем на C# реле-сервер, который обрабатывает пакеты MTProto и кодирует их в простой текстовый формат датасетов, который можно моментально обработать даже при нестабильном GPRS-соединении на 21-летнем Siemens C60, а также узнаем о разработке миниатюрных Android-приложений на базе «голого» API-системы, которые не тянут за собой никаких зависимостей, в том числе и AppCompat/androidx. Интересно?
Статья: https://habr.com/ru/companies/timeweb/articles/804033/
Платформа: Android
Я решил реализовать клиент Telegram на смартфоне 14-летней давности на базе официальной реализации MTProto от команды Telegram — TDLib. Сегодня мы с вами: узнаем новые причины мотивации вернуть в строй смартфоны прошлых лет, напишем на C# реле-сервер, который обрабатывает пакеты MTProto и кодирует их в простой текстовый формат датасетов, который можно моментально обработать даже при нестабильном GPRS-соединении на 21-летнем Siemens C60, а также узнаем о разработке миниатюрных Android-приложений на базе «голого» API-системы, которые не тянут за собой никаких зависимостей, в том числе и AppCompat/androidx. Интересно?
Статья: https://habr.com/ru/companies/timeweb/articles/804033/
Платформа: Android
🔥1
Игра в безопасность Android-приложений
В рамках статьи нас интересуют сами процессы взлома и защиты, а не конкретные методики работы с конкретными инструментами. Поэтому разберёмся с этими процессами и постараемся сделать выводы. Чтобы читать было интереснее, я решил попеременно ставить себя и на место нападающего, и на место защищающего приложение человека. Что-то вроде шахмат: сначала ход делает нападающий, а затем защищающийся. Пока кто-то не победит. Пройдём путь, постепенно наращивая сложность, от простого вроде HTTPS — к более сложному, вроде обфускации и деобфускации, изменению поведения. И под конец перейдём к C++ и просмотру его Assembler кода.
Статья: https://habr.com/ru/companies/cian/articles/804835/
Платформа: Android
В рамках статьи нас интересуют сами процессы взлома и защиты, а не конкретные методики работы с конкретными инструментами. Поэтому разберёмся с этими процессами и постараемся сделать выводы. Чтобы читать было интереснее, я решил попеременно ставить себя и на место нападающего, и на место защищающего приложение человека. Что-то вроде шахмат: сначала ход делает нападающий, а затем защищающийся. Пока кто-то не победит. Пройдём путь, постепенно наращивая сложность, от простого вроде HTTPS — к более сложному, вроде обфускации и деобфускации, изменению поведения. И под конец перейдём к C++ и просмотру его Assembler кода.
Статья: https://habr.com/ru/companies/cian/articles/804835/
Платформа: Android
Обработка сетевых вызовов в Swift с помощью Moya
Moya предоставляет нам абстракцию для выполнения сетевых вызовов без прямого взаимодействия с Alamofire и позволяет в кратчайшие сроки сосредоточиться на основных функциях вашего приложения вместо того, чтобы работать с сетью.
Статья: https://apptractor.ru/info/articles/moya.html
Платформа: iOS
Moya предоставляет нам абстракцию для выполнения сетевых вызовов без прямого взаимодействия с Alamofire и позволяет в кратчайшие сроки сосредоточиться на основных функциях вашего приложения вместо того, чтобы работать с сетью.
Статья: https://apptractor.ru/info/articles/moya.html
Платформа: iOS
GreenStash - это простое cвободное и открытое приложение для Android, которое поможет вам легко планировать и управлять своими сбережениями, а также выработает привычку экономить деньги. Внутри Material 3 и Material You, биометрия, MAD (пользовательский интерфейс и логика написаны на чистом Kotlin, единая активити, никаких фрагментов, только Composable Destinations.
GreenStash на GitHub: https://github.com/Pool-Of-Tears/GreenStash
Платформа: Android
⭐️: 428
GreenStash на GitHub: https://github.com/Pool-Of-Tears/GreenStash
Платформа: Android
⭐️: 428
Видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Посоветуйте в комментах интересные каналы по мобильной разработке? 🌐 @AppFiles
•
(iOS En)
Let's Build Interactive Floating Action Button - SwiftUI•
(iOS En)
How to easily test Push Notifications in the iOS simulator•
(iOS En)
Rebuild Bumble in SwiftUI•
(iOS En)
SwiftUI Limited TextField With Indicator•
(And Ru)
Как работает Android Work Profile•
(And Ru)
Разбор кода магазина приложений•
(And Ru)
Опыт, Java vs Kotlin и работа со списками•
(And En)
Now in Android: 102 - Google I/O 2024, Women’s History Month, Vulkan on Android, and more•
(And En)
DON'T Make This Clean Architecture Packaging Mistake•
(And En)
Improving Video Playback with ExoPlayer•
(And En)
Every Kind of Class in Kotlin•
(Crs Ru)
Как Compose Multiplatform for iOS может убить Flutter?•
(Dev Ru)
Открытое алгоритмическое собеседование (все собеседования)•
(Dev Ru)
Как разрабатывать Яндекс Маркет, обеспечивать качество и работать с BDUI•
(Dev Ru)
Собеседование продуктового аналитика в Авито•
(Dev Ru)
Дата/время•
(Dev Ru)
Релокация в UKПосоветуйте в комментах интересные каналы по мобильной разработке? 🌐 @AppFiles
YouTube
Let's Build Interactive Floating Action Button - SwiftUI
Hello Guys 🖐🖐🖐
In this video, I'm going to show how to create a cool Interactive Floating Action Button Using SwiftUI | Floating Action Button SwiftUI | SwiftUI Interactive Button | SwiftUI Action Button | SwiftUI Simultaneous Gesture | SwiftUI Gestures |…
In this video, I'm going to show how to create a cool Interactive Floating Action Button Using SwiftUI | Floating Action Button SwiftUI | SwiftUI Interactive Button | SwiftUI Action Button | SwiftUI Simultaneous Gesture | SwiftUI Gestures |…
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI Environment Overrides - небольшая библиотека, которая добавляет панель управления для тестирования того, как приложение SwiftUI адаптируется под различные цветовые темы, настройки доступности и локализации. Вдохновлена панелью "Environment Overrides" в Xcode, но позволяет проверять реальное работающее приложение вместо предварительного просмотра в Xcode.
SwiftUI Environment Overrides на GitHub: https://github.com/nalexn/EnvironmentOverrides
Платформа: iOS
⭐️: 304
SwiftUI Environment Overrides на GitHub: https://github.com/nalexn/EnvironmentOverrides
Платформа: iOS
⭐️: 304
Конструкторы-самозванцы в Kotlin
Сегодня я хочу поговорить про интересные моменты в Kotlin, связанные с вызовами конструкторов классов. Или не совсем конструкторов? Или же совсем не конструкторов? Давайте разбираться.
Статья: https://habr.com/ru/articles/805767/
Платформа: Android
Сегодня я хочу поговорить про интересные моменты в Kotlin, связанные с вызовами конструкторов классов. Или не совсем конструкторов? Или же совсем не конструкторов? Давайте разбираться.
Статья: https://habr.com/ru/articles/805767/
Платформа: Android
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Tap Target Compose - это Jetpack Compose реализация “мишеней” (Tap Target) из Material Design, используемых для указания пользователю на новые функции.
Tap Target Compose на GitHub: https://github.com/PierfrancescoSoffritti/tap-target-compose
Платформа: Android
⭐️: 32
Tap Target Compose на GitHub: https://github.com/PierfrancescoSoffritti/tap-target-compose
Платформа: Android
⭐️: 32
Поваренная книга SwiftUI: создание текстовых полей в SwiftUI
TextField в SwiftUI — это универсальный элемент, используемый для получения текстового ввода от пользователя.
Статья: https://apptractor.ru/info/articles/povarennaya-kniga-swiftui-sozdanie-tekstovyh-poley-v-swiftui.html
Платформа: iOS
TextField в SwiftUI — это универсальный элемент, используемый для получения текстового ввода от пользователя.
Статья: https://apptractor.ru/info/articles/povarennaya-kniga-swiftui-sozdanie-tekstovyh-poley-v-swiftui.html
Платформа: iOS
OpenSwiftUI - это реализация SwiftUI от Apple с открытым исходным кодом. Проект предназначен для создания приложений с графическим интерфейсом на платформах, отличных от Apple (например, Linux и Windows), диагностики и отладки проблем SwiftUI на платформе Apple. При этом дизайн API по возможности остается таким же, как и оригинальный API SwiftUI. В настоящее время этот проект находится на ранней стадии разработки и его не рекомендуют использовать в “производственных” приложениях.
OpenSwiftUI на GitHub: https://github.com/OpenSwiftUIProject/OpenSwiftUI
Платформа: iOS
⭐️: 635
OpenSwiftUI на GitHub: https://github.com/OpenSwiftUIProject/OpenSwiftUI
Платформа: iOS
⭐️: 635
Вторая часть "Осваиваем ViewModel в Android: «можно» и «нельзя»"
Рассматриваются два вопроса:
• Избегайте раскрытия мутабельных состояний
• Используйте update{} при использовании MutableStateFlows
Статья: https://apptractor.ru/info/articles/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-2.html
Платформа: Android
Рассматриваются два вопроса:
• Избегайте раскрытия мутабельных состояний
• Используйте update{} при использовании MutableStateFlows
Статья: https://apptractor.ru/info/articles/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-2.html
Платформа: Android
Убираем M из MVVM в SwiftUI
Вы наверняка заметили, насколько коротким получился код для представления, показывающего три разных состояния. Это потому, что один из лучших способов убрать «М» из MVVM — разбить представление на маленькие, простые структуры. Apple построила SwiftUI именно таким образом: State, Binding и Environment позволяют вашим представлениям взаимодействовать друг с другом прямолинейно.
Статья: https://apptractor.ru/info/articles/ubiraem-m-iz-mvvm-v-swiftui.html
Платформа: iOS
Вы наверняка заметили, насколько коротким получился код для представления, показывающего три разных состояния. Это потому, что один из лучших способов убрать «М» из MVVM — разбить представление на маленькие, простые структуры. Apple построила SwiftUI именно таким образом: State, Binding и Environment позволяют вашим представлениям взаимодействовать друг с другом прямолинейно.
Статья: https://apptractor.ru/info/articles/ubiraem-m-iz-mvvm-v-swiftui.html
Платформа: iOS
EinkBro - маленький браузер, созданный для экранов на электронных чернилах. EinkBro разработан в соответствии с потребностями Eink-устройств : никаких лишних переходов и анимаций, четкие черно-белые иконки, полезные функции для чтения на устройствах. Он был создан на основе FOSS Browser, который является полностью свободным приложением для Android.
EinkBro на GitHub: https://github.com/plateaukao/einkbro
Платформа: Android
⭐️: 910
EinkBro на GitHub: https://github.com/plateaukao/einkbro
Платформа: Android
⭐️: 910
Как я написал клиент электронного дневника своей области
Сейчас я учусь в 8 классе. Где-то с октября (сейчас апрель) я изучаю разработку мобильных приложения для андроид. И как это бывает у каждого - я столкнулся с проблемой: а какое приложение мне сделать? И мне крайне повезло. Я не стал делать какой-нибудь фейковый магазин, калькулятор, блокнот, туду лист и всякую подобную заезженную тему.
Статья: https://habr.com/ru/articles/806737/
Платформа: Android
Сейчас я учусь в 8 классе. Где-то с октября (сейчас апрель) я изучаю разработку мобильных приложения для андроид. И как это бывает у каждого - я столкнулся с проблемой: а какое приложение мне сделать? И мне крайне повезло. Я не стал делать какой-нибудь фейковый магазин, калькулятор, блокнот, туду лист и всякую подобную заезженную тему.
Статья: https://habr.com/ru/articles/806737/
Платформа: Android
🔥4
Как заканчивать игры (и другие проекты)
Я не верю, что есть правильный способ делать игры. Это творческое занятие, поэтому нет жестких правил, которые нельзя было бы нарушить в какой-то момент. Но как разработчик игр, который обсуждал эту проблему с другими разработчиками, я чувствую, что есть некоторые умственные ловушки, в которые мы все в какой-то момент попадаем, особенно когда мы только начинаем.
Статья: https://apptractor.ru/info/articles/kak-zakanchivat-igry-i-drugie-proekty.html
Я не верю, что есть правильный способ делать игры. Это творческое занятие, поэтому нет жестких правил, которые нельзя было бы нарушить в какой-то момент. Но как разработчик игр, который обсуждал эту проблему с другими разработчиками, я чувствую, что есть некоторые умственные ловушки, в которые мы все в какой-то момент попадаем, особенно когда мы только начинаем.
Статья: https://apptractor.ru/info/articles/kak-zakanchivat-igry-i-drugie-proekty.html