Compose Broadcast
5.4K subscribers
305 photos
83 videos
504 links
Все о Jetpack Compose и Compose Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Android - @android_broadcast
iOS - @ios_broadcast
Kotlin - @kotlin_broadcast
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🐱 Scratchify - Compose Multiplatform библиотека для добавления эффекта стирания

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍48🤯12🤔7
Пример использования Scratchify
@Composable
fun BasicScratchCard() {
val controller = remember { ScratchifyController() }

Scratchify(
modifier = Modifier.size(300.dp, 200.dp),
config = ScratchifyConfig(),
controller = controller,
contentToReveal = {
Box(
modifier = Modifier
.fillMaxSize()
.background(Color(0xFFFFD700)),
contentAlignment = Alignment.Center
) {
Text("🎉 You Won! 🎉", style = MaterialTheme.typography.headlineMedium)
}
},
overlayContent = {
Box(
modifier = Modifier
.fillMaxSize()
.background(Color(0xFF8E24AA)),
contentAlignment = Alignment.Center
) {
Text("Scratch Here!", color = Color.White)
}
}
)
}
11
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️ История (20м) как в Dodo переписали компонент слайдера на Compose. До этого он был на MotionLayout.

Причина - куча багов, которые не получалось решить, а также на Compose писать проще.

По итогу реализовали свой Layout, чтобы сделать иерархию плоской и было меньше рекомпозиций.
@Composable  
fun FastPaymentButton(
fastPaymentState: FastPaymentState,
modifier: Modifier = Modifier,
thumbContent: @Composable BoxScope.() -> Unit = {},
background: @Composable () -> Unit = DefaultFastPaymentButtonBackground,
// Параметры будут добавляться по мере обогащения слайдера фичами
onClick: () -> Unit = {},
onSwiped: () -> Unit = {},
) {
// Content
}


#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥47👍8
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Yandex Mobile Runtime: фестиваль практики для мобильных разработчиков

23 августа | Только офлайн

💡 Это новый формат встреч мобильного сообщества — без докладов, но с практикой и обменом опытом с сообществом.

🔥 Вы сможете посоревноваться в AI-хакатоне, обсудить карьерный трек с экспертами Яндекса, прокачаться на воркшопах по MCP и ускорению и приложений и принять участие в дискуссии от Городских сервисов Яндекса про метрики, тестирование и BDU. А ещё можно будет отдохнуть в зоне общения и настолок от команды Поиска и посетить кастомный бар от Яндекс 360.

🤖 Пока ждете фест — можете воспользоваться ботом для мобильных разработчиков: @ya_runtime_bot

⚡️ Он позволит отвлечься от рутины: решайте задачки и сохраняйте полезные материалы — гайды, кейсы и доклады, которые собрали эксперты из Яндекса.

👉 Регистрируемся на фест тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥2🤔2
Composable функция чем-то схожа с тем как работает suspend функция, только указывается особенность не через ключевое слово языка, а аннотацию из библиотеки. При компиляции кода происходит трансформация объявленной функции в код, который будет способен отобразить что-то на экране и обновляться. Удивительный мир магии плагина компилятора.

После пребразования получаются разные Node, узлы где есть вызовы Composable функций, выстроенные в иерархию. Подробнее в статье ⚙️ Что делается с Composable функцией, чтобы она работала в приложении (EN,5м) или по альтернативной ссылке

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍304
⚙️ RetainedEffect - новый side effect в Compose, который позволит сохранять данные, когда покидается композиция, но в неё скоро вернутся. Например, поворот экрана в Android. Некий аналог сохранения данных в памяти, как это делается с ViewModel.

Также разрабатывают схожее API retain {}

Пример использования RetainedEffect:
@Composable
@NonRestartableComposable
public fun RetainedEffect(key1: Any?, effect: RetainedEffectScope.() -> RetainedEffectResult) {
retain(key1) { RetainedEffectImpl(effect) }
}

public class RetainedEffectScope {
public inline fun onRetired(crossinline onRetiredEffect: () -> Unit): RetainedEffectResult =
object : RetainedEffectResult {
override fun retire() {
onRetiredEffect()
}
}
}


Кажется, что Compose хочет избавится от ViewModel и напрямую работать с получением данных без ViewModel. Как вам такой подход?

#composable
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔37🔥14🤯5👍41