Achieving Interface segregation in Android using Kotlin extension and inline functions
Простой пример реализации принципа "Разделения интерфейсов" из SOLID, с помощью Kotlin extension и inline функций.
В качестве примера, в статье рассматривается интерфейс
Кстати, еще один способ – реализовать некий адаптер обертку над интерфейсом и использовать его. Можете посмотреть исходники нативного
Читать (En)
Простой пример реализации принципа "Разделения интерфейсов" из SOLID, с помощью Kotlin extension и inline функций.
В качестве примера, в статье рассматривается интерфейс
TextWatcher для EditText, имеющий несколько методов, но в андроиде на самом деле, довольно много таких кейсов – нужен 1 метод, а приходиться реализовать все. В статье собственно и показан пример как это решить.Кстати, еще один способ – реализовать некий адаптер обертку над интерфейсом и использовать его. Можете посмотреть исходники нативного
AnimatorListenerAdapter.Читать (En)
👍15
MVI в iOS-приложении
Полезная статья от hh про то, как они внедряли MVI в iOS приложение. Что такое MVI и как он работает, как определялись с вариантами реализации, рассматриваются различные кейсы, ну и ко всему этому, интерактивные гифки =))
И еще одна статейка от hh про стейт-машины → Стейт-машины в iOS
Читать (Ru)
Полезная статья от hh про то, как они внедряли MVI в iOS приложение. Что такое MVI и как он работает, как определялись с вариантами реализации, рассматриваются различные кейсы, ну и ко всему этому, интерактивные гифки =))
И еще одна статейка от hh про стейт-машины → Стейт-машины в iOS
Читать (Ru)
👍8🔥2👎1💩1
The easiest way to implement Firebase RemoteConfig in Android
Простой пример реализации Firebase RemoteConfig.
На самом деле, достаточно мощный инструмент, который позволяет гибко настраивать параметры для конфигурации приложения, сегментировать пользователей по многим параметрам, что может быть полезно для а/б тестов и раскатки фич.
НО, в идеале такой сервис (remote config) для приложения нужно иметь на своём бэке, чтоб снизить риски внешних зависимостей. Особенно важно в текущей ситуации, когда внезапно что-нибудь может перестать работать.
Читать (En)
Простой пример реализации Firebase RemoteConfig.
На самом деле, достаточно мощный инструмент, который позволяет гибко настраивать параметры для конфигурации приложения, сегментировать пользователей по многим параметрам, что может быть полезно для а/б тестов и раскатки фич.
НО, в идеале такой сервис (remote config) для приложения нужно иметь на своём бэке, чтоб снизить риски внешних зависимостей. Особенно важно в текущей ситуации, когда внезапно что-нибудь может перестать работать.
Читать (En)
👍7
Идеальная архитектура. Чем отличается UseCase от Interactor?
Если еще не смотрели новый видос у Лёши Гладкова про архитектуру, обязательно посмотрите. Достаточно подробно разобрал главные правила любой архитектуры и все, основные компоненты Clean Architecture (Repository, DataSource, UseCase, Interactor).
Есть конечно холиварные темы, типа "Нужны интерфейсы или нет" или про те же UseCase`ы и Interactor`ы, но в целом, достаточно полезный разбор. Особенно полезно будет начинающим.
Если еще не смотрели новый видос у Лёши Гладкова про архитектуру, обязательно посмотрите. Достаточно подробно разобрал главные правила любой архитектуры и все, основные компоненты Clean Architecture (Repository, DataSource, UseCase, Interactor).
Есть конечно холиварные темы, типа "Нужны интерфейсы или нет" или про те же UseCase`ы и Interactor`ы, но в целом, достаточно полезный разбор. Особенно полезно будет начинающим.
YouTube
Идеальная архитектура. Чем отличается UseCase от Interactor? / Мобильный разработчик
Всем привет, меня очень часто спрашивают как сделать "идеальную архитектуру", что такое "идеальная архитектура" и так далее. Чем UseCase отличается от Interactor? Когда нужно пилить интерфейсы, когда не нужно, когда нужно делить на фиче модули, а когда нет.…
🔥17🤮9👍5
iOS App Modularisation — the Starting Point
Полезная статейка, в которой рассматриваются пожалуй основные и базовые вопросы модуляризации в iOS. Когда начинать разбивать проект на модули, как разделить приложение на модули и какие есть возможные варианты.
Основная мысль как и в других платформах – каждый модуль должен быть максимально независимый и автономный, а взаимодействие между модулями должно осуществляться через интерфейсы (Protocol).
Подробности и примеры, смотрите/читайте в статье. Пример кода можно посмотреть на GitHub.
Читать (En)
Полезная статейка, в которой рассматриваются пожалуй основные и базовые вопросы модуляризации в iOS. Когда начинать разбивать проект на модули, как разделить приложение на модули и какие есть возможные варианты.
Основная мысль как и в других платформах – каждый модуль должен быть максимально независимый и автономный, а взаимодействие между модулями должно осуществляться через интерфейсы (Protocol).
Подробности и примеры, смотрите/читайте в статье. Пример кода можно посмотреть на GitHub.
Читать (En)
👍6🔥2
Дайджест недели
Новостей интересных за прошедшую неделю особо и не было, за исключением обновления Telegram, в котором запустили подписку Telegram Premium. Стоимость подписки вроде как 449₽/мес, в которую входит: отсутствие рекламы, расшифровка войсов, загрузки файлов до 4 ГБ, какие-то уникальные реакции, премиальные стикеры, анимированные аватары и еще что-то. Хз конечно, может и зайдет, но как будто за платную подписку ожидаешь чего-то большего, чем уникальные реакции, премиальные стикеры и всё такое ))
Android 🤖
• Как сделать Android-приложение тестируемым?
• Achieving Interface segregation in Android using Kotlin extension and inline function
• The easiest way to implement Firebase RemoteConfig in Android
• Android — How to write the best Usecase/Interactors ever!
• How to build a messaging UI for your Android chat app
• Easy View Binding with Kotlin Delegate
• Why should you always test Compose performance in release?
• Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки
• Mirror Effect with Jetpack Compose
• Введение в Jetpack Compose
• Линтинг в Kotlin: полное руководство по настройке и эксплуатации
• Best Architecture for Jetpack Compose
• Jetpack Compose bottom sheet over Android view using Kotlin extension
• Parallax in Jetpack Compose. Just an Illusion!
• Creating a graph in Jetpack Compose
• Android — Spring & Fling Animations with Jetpack compose
• Implementing a fully-custom Design Language System with Jetpack Compose — Part 1/2: Foundation
• Implementing a fully-custom Design Language System with Jetpack Compose — Part 2/2: Components
• Android: Navigating with App Shortcuts
iOS 🍏
• MVI в iOS-приложении
• iOS App Modularisation — the Starting Point
• What are primary associated types in Swift 5.7?
• Using the ‘some’ and ‘any’ keywords to reference generic protocols in Swift 5.7
• Rendering SwiftUI views within UITableView or UICollectionView cells on iOS 16
• [Async/await] Как работает Coroutine Model
• RxSwift + PropertyWrapper: инкапсуляция и синтаксический сахар
• Hot Reloading a SwiftUI App
• What’s New in SwiftUI TextField for iOS 16?
• Xcode Cloud — Continuous Integration and Deployment
• Mastering NavigationStack in SwiftUI. Navigator Pattern
• New in iOS 16 — Self-resizing UICollectionView Cells
• How to Reverse Engineer and Patch an iOS Application for Beginners: Part I
• SwiftUI: How to create awesome flip effect with Rotation 3D Effect in 3 seconds
Кроссплатформа / Разработка 💻
• Tests Are The Best Kind Of Documentation
• Идеальная архитектура. Чем отличается UseCase от Interactor?
• Automate CI/CD Pipeline for Mobile App
• Flash Error Messages In Flutter
• Drop Shadow Effect In Flutter
• Как использовать gRPC-клиент в проекте на Kotlin Multiplatform Mobile
• Minimalist Guide to Testing in Flutter
• Curved Line Charts in Flutter
← Previous | Next →
Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Библиотеки и инструменты: @mobile_dev_tools
Подписаться: @mobile_native
Чат: @mobile_native_chat
Новостей интересных за прошедшую неделю особо и не было, за исключением обновления Telegram, в котором запустили подписку Telegram Premium. Стоимость подписки вроде как 449₽/мес, в которую входит: отсутствие рекламы, расшифровка войсов, загрузки файлов до 4 ГБ, какие-то уникальные реакции, премиальные стикеры, анимированные аватары и еще что-то. Хз конечно, может и зайдет, но как будто за платную подписку ожидаешь чего-то большего, чем уникальные реакции, премиальные стикеры и всё такое ))
Android 🤖
• Как сделать Android-приложение тестируемым?
• Achieving Interface segregation in Android using Kotlin extension and inline function
• The easiest way to implement Firebase RemoteConfig in Android
• Android — How to write the best Usecase/Interactors ever!
• How to build a messaging UI for your Android chat app
• Easy View Binding with Kotlin Delegate
• Why should you always test Compose performance in release?
• Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки
• Mirror Effect with Jetpack Compose
• Введение в Jetpack Compose
• Линтинг в Kotlin: полное руководство по настройке и эксплуатации
• Best Architecture for Jetpack Compose
• Jetpack Compose bottom sheet over Android view using Kotlin extension
• Parallax in Jetpack Compose. Just an Illusion!
• Creating a graph in Jetpack Compose
• Android — Spring & Fling Animations with Jetpack compose
• Implementing a fully-custom Design Language System with Jetpack Compose — Part 1/2: Foundation
• Implementing a fully-custom Design Language System with Jetpack Compose — Part 2/2: Components
• Android: Navigating with App Shortcuts
iOS 🍏
• MVI в iOS-приложении
• iOS App Modularisation — the Starting Point
• What are primary associated types in Swift 5.7?
• Using the ‘some’ and ‘any’ keywords to reference generic protocols in Swift 5.7
• Rendering SwiftUI views within UITableView or UICollectionView cells on iOS 16
• [Async/await] Как работает Coroutine Model
• RxSwift + PropertyWrapper: инкапсуляция и синтаксический сахар
• Hot Reloading a SwiftUI App
• What’s New in SwiftUI TextField for iOS 16?
• Xcode Cloud — Continuous Integration and Deployment
• Mastering NavigationStack in SwiftUI. Navigator Pattern
• New in iOS 16 — Self-resizing UICollectionView Cells
• How to Reverse Engineer and Patch an iOS Application for Beginners: Part I
• SwiftUI: How to create awesome flip effect with Rotation 3D Effect in 3 seconds
Кроссплатформа / Разработка 💻
• Tests Are The Best Kind Of Documentation
• Идеальная архитектура. Чем отличается UseCase от Interactor?
• Automate CI/CD Pipeline for Mobile App
• Flash Error Messages In Flutter
• Drop Shadow Effect In Flutter
• Как использовать gRPC-клиент в проекте на Kotlin Multiplatform Mobile
• Minimalist Guide to Testing in Flutter
• Curved Line Charts in Flutter
← Previous | Next →
Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Библиотеки и инструменты: @mobile_dev_tools
Подписаться: @mobile_native
Чат: @mobile_native_chat
👍7🔥1
От LiveData к Flow…
Ребята из команды СберЗдоровье рассказывают про переход от LiveData к Flow для связки ViewModel с View слоем. Ну и как всегда, рассматриваются основные отличия LiveData, различных видов Flow, Channel и что из этого лучше подходит под конкретные задачи.
Читать (Ru)
Ребята из команды СберЗдоровье рассказывают про переход от LiveData к Flow для связки ViewModel с View слоем. Ну и как всегда, рассматриваются основные отличия LiveData, различных видов Flow, Channel и что из этого лучше подходит под конкретные задачи.
Читать (Ru)
👍18💩13🐳2
Аналитика в декларативном стиле с поддержкой многомодульности
Интересный вариант реализации отправки событий аналитики в декларативном стиле и многомодульном проекте. С примерами кода, который можно адаптировать по себя.
Читать (Ru)
Интересный вариант реализации отправки событий аналитики в декларативном стиле и многомодульном проекте. С примерами кода, который можно адаптировать по себя.
Читать (Ru)
👍7❤🔥2💯1
Common Mistakes in User Experience / User Interfaces
Недавно в соседнем канале закинули 2 интересные статейки про UI/UX, которые решил продублировать сюда.
Статьи не совсем стандартные для моего канала, но весьма полезные. Архитектура архитектурой, но продуманый UX и красивый UI тоже играет большую роль в работоспособности наших приложений.
👉 Bad Bad UI: 10 Common Mistakes in User Interfaces (👏 3.3К)
👉 Bad Bad UX: 20 Common Mistakes in User Experience (👏 1K)
P.S. Поставьте плиз соответствующую реакцию 👍, 🔥 или ❤️, так я пойму стоит размещать в дальнейшем подобные материалы или нет.
Недавно в соседнем канале закинули 2 интересные статейки про UI/UX, которые решил продублировать сюда.
Статьи не совсем стандартные для моего канала, но весьма полезные. Архитектура архитектурой, но продуманый UX и красивый UI тоже играет большую роль в работоспособности наших приложений.
👉 Bad Bad UI: 10 Common Mistakes in User Interfaces (👏 3.3К)
👉 Bad Bad UX: 20 Common Mistakes in User Experience (👏 1K)
P.S. Поставьте плиз соответствующую реакцию 👍, 🔥 или ❤️, так я пойму стоит размещать в дальнейшем подобные материалы или нет.
👍27🔥6❤3💯1
Улучшаем производительность android-приложения с помощью Baseline profiles
Полезная статья о том, как с помощью новой фичи Baseline profiles ускорить время запуска приложения и повысить производительность. Также, в статье достаточно подробно рассказывается как работает ART, AOT, JIT, Dalvik.
Документация тут: Baseline Profiles
Либа, которую нужно подрубить, для генерации профиля: ProfileInstaller
Читать (Ru)
Полезная статья о том, как с помощью новой фичи Baseline profiles ускорить время запуска приложения и повысить производительность. Также, в статье достаточно подробно рассказывается как работает ART, AOT, JIT, Dalvik.
Документация тут: Baseline Profiles
Либа, которую нужно подрубить, для генерации профиля: ProfileInstaller
Читать (Ru)
👍7
Дайджест недели
«Яндекс» открыл разработчикам доступ к своим тестам для проверки технических навыков. Назвали они эту штуку "Диагностика навыков" – по сути, это такой же, обычный собес в Яндекс, только в итоге вы получите финальную оценку вашего технического уровня, подробности тут.
Вы тоже заметили, что Jetpack Compose достаточно быстро стал набирать обороты?)
Android 🤖
• От LiveData к Flow…
• Аналитика в декларативном стиле с поддержкой многомодульност
• Улучшаем производительность android-приложения с помощью Baseline profiles
• Things you can do in Android Studio
• Why I quit Android Development after 10 years and what I plan to do now
• The State of Navigation in Jetpack Compose
• Collections: Maps
• Common Kotlin Coroutines use-cases
• Using Live Templates to Improve Android Development Productivity
• How Kotlin Coroutine works - the brief dive
• Build State-driven UI with MVVM and clean architecture in android.
• Android 13: какие изменения нас ожидают
• Jetpack Compose для тех, кто в танке
• Easing in to Easing Curves in Jetpack Compose
• Koin Annotations 1.0 - Now Stable!
• Полное руководство по тестовым дублерам в Android — Часть 1: Теория
• Kotlin Flow with Clean Architecture and MVVM Pattern in Android
• Difference between getActivity and requireActivity
iOS 🍏
• Announcing the Language Workgroup | Swift
• Async/Await, Combine, Closures: A Guide to Modern Asynchronous Swift
• New in SwiftUI 4: Gauge View
• WWDC NOTES
• Swift Charts Examples | GitHub
• SF Symbols 4 variable colors
• Do `any` and `some` help with "Protocol Oriented Testing" at all?
• Method Dispatch
• Copy-on-write
• Как iOS 15 сломала авторизацию на два месяца. Хронология и лечение от СберМаркета
• Взаимодействие с alerts и permissions в ui-тестировании iOS
• Refactor a Swift Codebase Using SOLID Principles — in an Iterative Way
• Understanding the “some” and “any” keywords in Swift 5.7
• How to override system appearance in SwiftUI
Кроссплатформа / Разработка 💻
• Common Mistakes in User Experience / User Interfaces
• Flutter Google Map With Live Location Tracking — Uber Style
• A List of state management approaches in Flutter
• 5 Untold Features of Kotlin. Hidden features of Kotlin
• Flutter Interview Questions
• Как добавить Isar в проект на Flutter
• Implemented Overlay In Flutter
• Flutter Canvas API: Getting Started
• Minimalist Guide to Testing in Flutter — Part 2 Mocking
• 7 Useful JetBrains IDE Plugins to Make Your Life Easier
← Previous | Next →
Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Библиотеки и инструменты: @mobile_dev_tools
Подписаться: @mobile_native
Чат: @mobile_native_chat
«Яндекс» открыл разработчикам доступ к своим тестам для проверки технических навыков. Назвали они эту штуку "Диагностика навыков" – по сути, это такой же, обычный собес в Яндекс, только в итоге вы получите финальную оценку вашего технического уровня, подробности тут.
Вы тоже заметили, что Jetpack Compose достаточно быстро стал набирать обороты?)
Android 🤖
• От LiveData к Flow…
• Аналитика в декларативном стиле с поддержкой многомодульност
• Улучшаем производительность android-приложения с помощью Baseline profiles
• Things you can do in Android Studio
• Why I quit Android Development after 10 years and what I plan to do now
• The State of Navigation in Jetpack Compose
• Collections: Maps
• Common Kotlin Coroutines use-cases
• Using Live Templates to Improve Android Development Productivity
• How Kotlin Coroutine works - the brief dive
• Build State-driven UI with MVVM and clean architecture in android.
• Android 13: какие изменения нас ожидают
• Jetpack Compose для тех, кто в танке
• Easing in to Easing Curves in Jetpack Compose
• Koin Annotations 1.0 - Now Stable!
• Полное руководство по тестовым дублерам в Android — Часть 1: Теория
• Kotlin Flow with Clean Architecture and MVVM Pattern in Android
• Difference between getActivity and requireActivity
iOS 🍏
• Announcing the Language Workgroup | Swift
• Async/Await, Combine, Closures: A Guide to Modern Asynchronous Swift
• New in SwiftUI 4: Gauge View
• WWDC NOTES
• Swift Charts Examples | GitHub
• SF Symbols 4 variable colors
• Do `any` and `some` help with "Protocol Oriented Testing" at all?
• Method Dispatch
• Copy-on-write
• Как iOS 15 сломала авторизацию на два месяца. Хронология и лечение от СберМаркета
• Взаимодействие с alerts и permissions в ui-тестировании iOS
• Refactor a Swift Codebase Using SOLID Principles — in an Iterative Way
• Understanding the “some” and “any” keywords in Swift 5.7
• How to override system appearance in SwiftUI
Кроссплатформа / Разработка 💻
• Common Mistakes in User Experience / User Interfaces
• Flutter Google Map With Live Location Tracking — Uber Style
• A List of state management approaches in Flutter
• 5 Untold Features of Kotlin. Hidden features of Kotlin
• Flutter Interview Questions
• Как добавить Isar в проект на Flutter
• Implemented Overlay In Flutter
• Flutter Canvas API: Getting Started
• Minimalist Guide to Testing in Flutter — Part 2 Mocking
• 7 Useful JetBrains IDE Plugins to Make Your Life Easier
← Previous | Next →
Предложить материал: @artemiygreg
Митапы и конференции: @meetup_today
Библиотеки и инструменты: @mobile_dev_tools
Подписаться: @mobile_native
Чат: @mobile_native_chat
👍10🤡6❤🔥3
Modularising Trendyol Android App for Build Efficiency
Еще одна крутая статья на тему многомодульности в Android. В статье разбираются основные аспекты типа, как повысить эффективность сборки за счет модуляризации, как собираются модули, параллельные Gradle сборки, зависимости модулей, взаимодействие и т.д.
Ну а в конце статьи, можно посмотреть пример того, какой профит в скорости можно получить от модуляризации.
Читать (En)
Еще одна крутая статья на тему многомодульности в Android. В статье разбираются основные аспекты типа, как повысить эффективность сборки за счет модуляризации, как собираются модули, параллельные Gradle сборки, зависимости модулей, взаимодействие и т.д.
Ну а в конце статьи, можно посмотреть пример того, какой профит в скорости можно получить от модуляризации.
Читать (En)
❤🔥11👍3
We need to go deeper: диплинки и кодогенерация
Статья от Qiwi, про то, как они организовали обработку диплинков в Android через кодогенерацию.
Подобной реализации еще не встречал, выглядит достаточно прикольно.
Читать (Ru)
Статья от Qiwi, про то, как они организовали обработку диплинков в Android через кодогенерацию.
Подобной реализации еще не встречал, выглядит достаточно прикольно.
Читать (Ru)
👍8🔥2
A Solution for Combining Kotlin Suspend Function + Retrofit
Пример реализации сетевого слоя через coroutines/suspend function. Статья по большей части рассчитана для начинающих.
И есть один нюанс, в статье, в классе
Читать (En)
Пример реализации сетевого слоя через coroutines/suspend function. Статья по большей части рассчитана для начинающих.
И есть один нюанс, в статье, в классе
ErrorResponse есть неявная зависимость Context (appContext.getString(R.string.unknown_error)) и вот я бы не рекомендовал так делать, лучше такие штуки выносить непосредственно во View (Activity/Fragment).Читать (En)
👍10👎1
14 задач по Kotlin lists, которые заставят вас подумать
Интересный формат статьи, с задачками на знание операторов у списков. Обязательно попробуйте решить неглядя правильные ответы и имейте ввиду, что некоторые задачки с подвохом 😉
Решать (Ru)
Интересный формат статьи, с задачками на знание операторов у списков. Обязательно попробуйте решить неглядя правильные ответы и имейте ввиду, что некоторые задачки с подвохом 😉
Решать (Ru)
❤🔥17👎4👍2🤯2
8 anti-patterns in Android codebase and why I hate them
Если еще не читали данную статья, обязательно почитайте. В целом довольно правильно всё написано, но есть пункты для обсуждения.
Вот например большинство хаят те же синглтоны, базовые классы и event bus style, но практически в каждом проекте, над которым я работал или видел, всё это использовалось.
Мое мнение такое на этот счет – использовать можно практически всё, но с умом и для решения конкретных задач.
Читать (En)
Если еще не читали данную статья, обязательно почитайте. В целом довольно правильно всё написано, но есть пункты для обсуждения.
Вот например большинство хаят те же синглтоны, базовые классы и event bus style, но практически в каждом проекте, над которым я работал или видел, всё это использовалось.
Мое мнение такое на этот счет – использовать можно практически всё, но с умом и для решения конкретных задач.
Читать (En)
👍12👎1
Переход на SwiftUI: внедряем TabView взамен UITabBarController
Сказ о том, как переписать навигацию в iOS на TabView, с учетом того, что в приложении есть экраны и на SwiftUI и на UIKit.
Читать (Ru)
Сказ о том, как переписать навигацию в iOS на TabView, с учетом того, что в приложении есть экраны и на SwiftUI и на UIKit.
Читать (Ru)
👍4
5 Useful Kotlin Extensions for Android Developers
Небольшая заметка довольно простых, но при этом полезных Extensions.
И еще: Extension Functions You Need to Know in Android
Читать (En)
Небольшая заметка довольно простых, но при этом полезных Extensions.
И еще: Extension Functions You Need to Know in Android
Читать (En)
👍10💩8
Stop passing Context into ViewModels
Пару дней назад постил статью про реализацию сетевого слоя через корутины, где говорил про зависимость контекста.
Так вот, сегодня попалась на глаза статья по смежной теме (Context), а именно про передачу контекста во ViewModel. В статье рассказывается почему так лучше не делать и рассматриваюся базовые варианты решения, типа Resource и Locale.
P.S. Не передавайте контекст туда, где он не нужен :)
Читать (En)
Пару дней назад постил статью про реализацию сетевого слоя через корутины, где говорил про зависимость контекста.
Так вот, сегодня попалась на глаза статья по смежной теме (Context), а именно про передачу контекста во ViewModel. В статье рассказывается почему так лучше не делать и рассматриваюся базовые варианты решения, типа Resource и Locale.
P.S. Не передавайте контекст туда, где он не нужен :)
Читать (En)
👍8🔥7
Customizing AnimatedContent in Jetpack Compose
Несколько примеров плавных переходов в зависимости от стейта через AnimatiedContent (пока что в experimental).
Выглядит неплохо и по коду вроде не особо сложно 👍
Читать (En)
Несколько примеров плавных переходов в зависимости от стейта через AnimatiedContent (пока что в experimental).
Выглядит неплохо и по коду вроде не особо сложно 👍
Читать (En)
👍10🤮3
Compose End to End тестирование. Основы
В официальной документации сказано, что тестирование UI слоя написанного на Compose, отличаются от тестов привычного View на xml.
Связанно это с тем, что в Compose создаётся отдельное семантическое дерево, которое представляет UI, но не является им. Это дерево также используется для обеспечения доступности интерфейса.
Ловите вводную часть, в которой как раз рассказывается про основы и некоторые особенности написания UI тестов под Compose.
Полезные ссылки
👉 Testing your Compose layout
👉 Исходники из статьи
👉 Testing cheat sheet
Читать (Ru)
В официальной документации сказано, что тестирование UI слоя написанного на Compose, отличаются от тестов привычного View на xml.
Связанно это с тем, что в Compose создаётся отдельное семантическое дерево, которое представляет UI, но не является им. Это дерево также используется для обеспечения доступности интерфейса.
Ловите вводную часть, в которой как раз рассказывается про основы и некоторые особенности написания UI тестов под Compose.
Полезные ссылки
👉 Testing your Compose layout
👉 Исходники из статьи
👉 Testing cheat sheet
Читать (Ru)
👍4🔥2