Warning: mkdir(): No space left on device in /var/www/hottg/post.php on line 59

Warning: file_put_contents(aCache/aDaily/2025-07-22/post/mobileproglib/--): Failed to open stream: No such file or directory in /var/www/hottg/post.php on line 72
πŸ†’ 5 Ρ‚Ρ€ΡŽΠΊΠΎΠ² Jetpack Compose @Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° мобильного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° | Android, iOS, Swift, Retrofit, Moshi, Chuck
TG Telegram Group & Channel
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° мобильного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° | Android, iOS, Swift, Retrofit, Moshi, Chuck | United States America (US)
Create: Update:

πŸ†’ 5 Ρ‚Ρ€ΡŽΠΊΠΎΠ² Jetpack Compose, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹, вСроятно, Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅

Рассмотрим 5 Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½Π΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ малоизвСстных Ρ‚Ρ€ΡŽΠΊΠΎΠ² с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом Π² Jetpack Compose, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивныС, красивыС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π² обслуТивании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы.

1️⃣ АнимируйтС видимости с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Enter/Exit

ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ if (visible) Box {}, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AnimatedVisibility для чистой Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ…ΠΎΠ΄Π° ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π°.

AnimatedVisibility(
visible = showDetails,
enter = fadeIn() + slideInVertically(),
exit = fadeOut() + slideOutVertically()
) {
Text("Here's a smooth transition")
}


ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ: это избавляСт ΠΎΡ‚ нСобходимости Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ UX.

2️⃣ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Layout для создания кастомных ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

Иногда стандартных Row, Column ΠΈ Box нСдостаточно. Π’ΠΎΠ³Π΄Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Modifier.layout.

Modifier.layout { measurable, constraints ->
val placeable = measurable.measure(constraints)
layout(placeable.width, placeable.height) {
// Flip layout horizontally
placeable.placeRelative(-placeable.width, 0)
}
}


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования: созданиС Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ нСстандартноС располоТСниС UI.

3️⃣ РаздСляйтС элСмСнты Π² LazyColumn

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом?

LazyColumn {
itemsIndexed(items) { index, item ->
Text(item)
if (index != items.lastIndex) {
Divider()
}
}
}


Бонус: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ раздСлитСлями, Π° Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ рядами Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ, совСты ΠΈΠ»ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.

4️⃣ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ drawBehind для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ рисунка Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π³Ρ€Π°Π½ΠΈΡ†

Ѐункция drawBehind позволяСт Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π·Π° ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, игнорируя отступы ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ рисуя Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†.

Modifier
.padding(16.dp)
.drawBehind {
drawRect(Color.Gray)
}


ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Π΅Π½ΡŒ ΠΈΠ»ΠΈ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΉ Ρ„ΠΎΠ½, выходящий Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ содСрТимого.

5️⃣ ЗакрСпляйтС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π² LazyColumn с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ stickyHeader

Jetpack Compose ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Β«Π»ΠΈΠΏΠΊΠΈΡ…Β» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²:

LazyColumn {
stickyHeader {
Text(
"Section Title",
modifier = Modifier.background(Color.White)
)
}
items(data) {
Text(it)
}
}


ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для: Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Ρ… списков (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ A-Z), Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Ρ‡Π°Ρ‚Π° ΠΏΠΎ Π΄Π°Ρ‚Π΅ ΠΈ Ρ‚.Π΄.

Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях Π»Π°ΠΉΡ„Ρ…Π°ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ πŸ’¬

🐸 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° мобильного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

#буст

πŸ†’ 5 Ρ‚Ρ€ΡŽΠΊΠΎΠ² Jetpack Compose, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹, вСроятно, Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅

Рассмотрим 5 Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½Π΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ малоизвСстных Ρ‚Ρ€ΡŽΠΊΠΎΠ² с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом Π² Jetpack Compose, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивныС, красивыС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π² обслуТивании ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы.

1️⃣ АнимируйтС видимости с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Enter/Exit

ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ if (visible) Box {}, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AnimatedVisibility для чистой Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ…ΠΎΠ΄Π° ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π°.

AnimatedVisibility(
visible = showDetails,
enter = fadeIn() + slideInVertically(),
exit = fadeOut() + slideOutVertically()
) {
Text("Here's a smooth transition")
}


ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ: это избавляСт ΠΎΡ‚ нСобходимости Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ UX.

2️⃣ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Layout для создания кастомных ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

Иногда стандартных Row, Column ΠΈ Box нСдостаточно. Π’ΠΎΠ³Π΄Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Modifier.layout.

Modifier.layout { measurable, constraints ->
val placeable = measurable.measure(constraints)
layout(placeable.width, placeable.height) {
// Flip layout horizontally
placeable.placeRelative(-placeable.width, 0)
}
}


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования: созданиС Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ нСстандартноС располоТСниС UI.

3️⃣ РаздСляйтС элСмСнты Π² LazyColumn

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом?

LazyColumn {
itemsIndexed(items) { index, item ->
Text(item)
if (index != items.lastIndex) {
Divider()
}
}
}


Бонус: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ раздСлитСлями, Π° Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ рядами Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ, совСты ΠΈΠ»ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.

4️⃣ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ drawBehind для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ рисунка Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π³Ρ€Π°Π½ΠΈΡ†

Ѐункция drawBehind позволяСт Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π·Π° ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, игнорируя отступы ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ рисуя Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†.

Modifier
.padding(16.dp)
.drawBehind {
drawRect(Color.Gray)
}


ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Π΅Π½ΡŒ ΠΈΠ»ΠΈ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΉ Ρ„ΠΎΠ½, выходящий Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ содСрТимого.

5️⃣ ЗакрСпляйтС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π² LazyColumn с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ stickyHeader

Jetpack Compose ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Β«Π»ΠΈΠΏΠΊΠΈΡ…Β» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²:

LazyColumn {
stickyHeader {
Text(
"Section Title",
modifier = Modifier.background(Color.White)
)
}
items(data) {
Text(it)
}
}


ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для: Π³Ρ€ΡƒΠΏΠΏΠΎΠ²Ρ‹Ρ… списков (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ A-Z), Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Ρ‡Π°Ρ‚Π° ΠΏΠΎ Π΄Π°Ρ‚Π΅ ΠΈ Ρ‚.Π΄.

Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях Π»Π°ΠΉΡ„Ρ…Π°ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ πŸ’¬

🐸 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° мобильного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘6πŸ”₯4🌚4


>>Click here to continue<<

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° мобильного Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° | Android, iOS, Swift, Retrofit, Moshi, Chuck




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)


Warning: Undefined array key 3 in /var/www/hottg/function.php on line 115

Fatal error: Uncaught mysqli_sql_exception: Too many connections in /var/www/db.php:16 Stack trace: #0 /var/www/db.php(16): mysqli_connect() #1 /var/www/hottg/function.php(212): db() #2 /var/www/hottg/function.php(115): select() #3 /var/www/hottg/post.php(351): daCache() #4 /var/www/hottg/route.php(63): include_once('...') #5 {main} thrown in /var/www/db.php on line 16