Compose Drag And Drop - библиотека для простой реализации Drag & Drop в Compose
В новой версии androidx.lifecycle появился LifecycleEventEffect для Compose, который позволяет отслеживать события жизненного цикла. До этого приходилось самостоятельно создавать LifecycleEventObserver и использовать DisposableEffect, чтобы корректно удалить наблюдателя.
Помимо общего эффекта, также появились более специфичные эффекты LifecycleStartEffect и LifecycleResumeEffect для отслеживания событий onStart и onResume соответственно.
⚠️ Обратите внимание, что отследить событие onDestroy не получится, потому что Compose не будет рекомпозироваться после события onStop!
Помимо общего эффекта, также появились более специфичные эффекты LifecycleStartEffect и LifecycleResumeEffect для отслеживания событий onStart и onResume соответственно.
⚠️ Обратите внимание, что отследить событие onDestroy не получится, потому что Compose не будет рекомпозироваться после события onStop!
Forwarded from Мобильная разработка
Google удалила базовый курс по Kotlin, вместо него доступен только курс по Compose
Компания удалила со своего сайта курс Android Basics with Kotlin и оставила только Android Basics with Compose: https://developer.android.com/courses/android-basics-compose/course
Google как бы намекает, что если вы изучаете разработку на Android или начинаете новое приложение, то вы должны выбирать Compose. Это не значит, что прямо сейчас что-то перестанет работать. Но Google явно делают упор именно на Compose в будущем.
Естественно, не все тепло восприняли такие действия. На Reddit, например, идет активное обсуждение. Там есть как обоснованные за, так и против. Интересно почитать: https://reddit.com/r/androiddev/comments/194r5xm/google_just_removed_their_android_basics_with/
#android #google
Компания удалила со своего сайта курс Android Basics with Kotlin и оставила только Android Basics with Compose: https://developer.android.com/courses/android-basics-compose/course
Google как бы намекает, что если вы изучаете разработку на Android или начинаете новое приложение, то вы должны выбирать Compose. Это не значит, что прямо сейчас что-то перестанет работать. Но Google явно делают упор именно на Compose в будущем.
Естественно, не все тепло восприняли такие действия. На Reddit, например, идет активное обсуждение. Там есть как обоснованные за, так и против. Интересно почитать: https://reddit.com/r/androiddev/comments/194r5xm/google_just_removed_their_android_basics_with/
#android #google
This media is not supported in your browser
VIEW IN TELEGRAM
Compose Action Menu - мультиплатформенная библиотека для реализации меню в Compose MP
#android #ios #jvm @compose_broadcast
#android #ios #jvm @compose_broadcast
Если вам надо рисовать UI под системными панелями, когда используете Compose - статья (6 мин, EN, ссылка без VPN) в помощь и исходники на GitHub
#android @compose_broadcast
#android @compose_broadcast
CompositionLocal - это способ передачи данных которые могут использоваться во всех вложенных Composable функций. Самый просто пример - это MaterialTheme.
В статье (6 мин, EN, ссылка без VPN) вы можете получше разобраться в вопросе (ну уровне применения) либо читайте официальную документацию
#compose @compose_broadcast
В статье (6 мин, EN, ссылка без VPN) вы можете получше разобраться в вопросе (ну уровне применения) либо читайте официальную документацию
#compose @compose_broadcast
Forwarded from Mobile Developer (Алексей Гладков)
Compose Multiplatform 1.6.0 beta released
https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.6.0-beta01
👉 Экспериментальная поддержка compose resources
🔥 Поддержка установленных шрифтов для десктопа и веба
👉 Wasm таргет в мавен централ
👉 Экспериментальная поддержка нативных попапов/диалогов за пределами основного окна
👉 Kotlin 1.9.22
Бегом тестить 😁
https://github.com/JetBrains/compose-multiplatform/releases/tag/v1.6.0-beta01
👉 Экспериментальная поддержка compose resources
🔥 Поддержка установленных шрифтов для десктопа и веба
👉 Wasm таргет в мавен централ
👉 Экспериментальная поддержка нативных попапов/диалогов за пределами основного окна
👉 Kotlin 1.9.22
Бегом тестить 😁
GitHub
Release 1.6.0-beta01 · JetBrains/compose-multiplatform
Highlights
Resource library improvements (demo project)
Compile-time checking of resources through a generated Res class
Introduce top level composeResources dir with drawable, font, files, value...
Resource library improvements (demo project)
Compile-time checking of resources through a generated Res class
Introduce top level composeResources dir with drawable, font, files, value...
Вышел Jetpack Compose 1.6.0:
🚀 Ускорение работы скролла и времени запуска
👉 Обновленное руководство создания собственных Modifier
👉 Улучшен код, генерируемый Compose плагином компилятора
👉 Новый экспериментальный режим "strong skipping mode", который делает правила рекомпозиции менее строгими
👉 Отключен padding для шрифтов по умолчанию
👉 Добавлена поддержка нелинейного масштабирования текста
👉 Добавлена поддержка Drag & Drop между приложениями. Пример тут
👉 Выделение элементов мышью, включая текст
Обновленный Roadmap развития JetpackCompose тут
#android @compose_broadcast
🚀 Ускорение работы скролла и времени запуска
👉 Обновленное руководство создания собственных Modifier
👉 Улучшен код, генерируемый Compose плагином компилятора
👉 Новый экспериментальный режим "strong skipping mode", который делает правила рекомпозиции менее строгими
👉 Отключен padding для шрифтов по умолчанию
👉 Добавлена поддержка нелинейного масштабирования текста
👉 Добавлена поддержка Drag & Drop между приложениями. Пример тут
👉 Выделение элементов мышью, включая текст
Обновленный Roadmap развития JetpackCompose тут
#android @compose_broadcast
Инструкция (11 мин) по интеграции Яндекс Карт в приложение на Compose Multiplatform (Android + iOS)
#maps #android #ios @compose_broadcast
#maps #android #ios @compose_broadcast
Вышел Accompanist 0.34.0: обновление до Compose 1.6 и исправление документации
#android @compose_broadcast
#android @compose_broadcast
В Compose Multiplatform 1.6.0-beta01 появилась экспериментальная поддержка ресурсов, в том числе появилась поддержка кастомных шрифтов! Теперь генерируется специальный класс с ресурсами, по аналогии с R классом в Android.
В статье (EN, 4 мин, ссылка без VPN) вы узнаете как работать с такими ресурсами и какие проблемы сейчас есть:
👉 Есть проблемы с .ttf шрифтами
👉 Нет поддержки plurals
👉 Нельзя объявить ресурсы в нескольких модулях
#android #ios #jvm @compose_broadcast
В статье (EN, 4 мин, ссылка без VPN) вы узнаете как работать с такими ресурсами и какие проблемы сейчас есть:
👉 Есть проблемы с .ttf шрифтами
👉 Нет поддержки plurals
👉 Нельзя объявить ресурсы в нескольких модулях
#android #ios #jvm @compose_broadcast
Подборка советов по использованию Compose с другими библиотеками (EN, 5 мин, ссылка без VPN):
👉 Как объявлять функции чтобы они могли дружить с Preview
👉 Навигация в многомодульном приложении
👉 ViewModel Dependency Injection
#android @compose_broadcast
👉 Как объявлять функции чтобы они могли дружить с Preview
👉 Навигация в многомодульном приложении
👉 ViewModel Dependency Injection
#android @compose_broadcast
Довольно хорошая демонстрация (EN, 7 мин, ссылка без VPN) как отслеживать какие функции в Compose слишком часто выполняются при рекомпозиции и как оптимизировать работу с помощью аннотация
#android #performance @compose_broadcast
@Stable и @Immutable#android #performance @compose_broadcast
PrevGen - KSP плагин компилятора для генерации стабовых данных для Compose Preview на основе data классов
#ksp @compose_broadcast
#ksp @compose_broadcast
Forwarded from Kotlin Adept Notes (Alex Panov)
Наткнулся на статью "38 ошибок в Compose" и возникло строгое ощущение, что статью писало ChatGPT, ибо ошибок и неточностей там огромное количество, даже начиная с самых первых пунктов.
1. Нам предлагают написать такой код за место обычной лямбды:
При том, что rememberUpdatedState в целом используется для другого, в примере с обычной лямбдой было бы все окей, так как Compose умеет мемеизировать лямбды со стабильным типами.
В большинстве случаев вам не нужно ничего оптимизировать – это задача команды Compose. Но если все же нужно:
🔵 оберните лямбды с нестабильными типами в remember
🔵 передавайте часто меняющиеся параметры как Sate или лямбду
2. Далее нам предлагают заменить вложенные layout на Box или ConstraintLayout🤡
Тут даже комментировать не хочется, ибо в Compose есть правило одного прохода, вьюшки не меряются два раза, соответственно проблем с производительностью не будет.
Разумеется это не все проблемы в статье, так что не верьте всему, что написано в интернете (мне тоже), а лучше читайте официальную документацию🗿
1. Нам предлагают написать такой код за место обычной лямбды:
@Composable
fun MyComponent() {
var counter by remember { mutableStateOf(0) }
val clickAction = rememberUpdatedState { counter++ }
Button(onClick = { clickAction.value.invoke() }) {
Text("Clicked $counter times")
}
}
При том, что rememberUpdatedState в целом используется для другого, в примере с обычной лямбдой было бы все окей, так как Compose умеет мемеизировать лямбды со стабильным типами.
В большинстве случаев вам не нужно ничего оптимизировать – это задача команды Compose. Но если все же нужно:
2. Далее нам предлагают заменить вложенные layout на Box или ConstraintLayout
Тут даже комментировать не хочется, ибо в Compose есть правило одного прохода, вьюшки не меряются два раза, соответственно проблем с производительностью не будет.
Разумеется это не все проблемы в статье, так что не верьте всему, что написано в интернете (мне тоже), а лучше читайте официальную документацию
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышел Material Design 3 для Compose версии 1.2
👉 Новые экспериментальный компоненты - PullToRefreshContainer и PullToRefreshState
👉 Новый экспериментальный тип кнопок - Segmented Button
👉 Автоматическое скрытие/появление BottomBar при скролле
👉 Рефакторинг
👉
👉
👉 Больше цветов в палитре цветов для большой кастомизации приложения, а также теперь она стала работать лучше
👉 Разные типы
Больше подробностей в release notes
#material #design #android @compose_broadcast
👉 Новые экспериментальный компоненты - PullToRefreshContainer и PullToRefreshState
👉 Новый экспериментальный тип кнопок - Segmented Button
👉 Автоматическое скрытие/появление BottomBar при скролле
👉 Рефакторинг
SwipeToDismiss👉
Badge и BadgedBox теперь стабильные👉
Сhip тоже стабильные👉 Больше цветов в палитре цветов для большой кастомизации приложения, а также теперь она стала работать лучше
👉 Разные типы
SurfaceБольше подробностей в release notes
#material #design #android @compose_broadcast
Руководство по использованию Slack Circuit архитектуры в KMP проекта с UI на Compose (EN, 5 мин, ссылка без VPN). Происходит демонстрация пример. Presenter не тот Presenter что в MVP
#architecture
#architecture