Trending

#Compose

Latest posts tagged with #Compose on Bluesky

Latest Top
Trending

Posts tagged #Compose

Chromogène de la chatte

Un chromogène est un composé chimique qui, lorsqu'il est exposé à une certaine condition, produit une couleur visible. Ces substances sont souvent utilisées en chimie et en biologie pour des tests de détection. #Chromogene #Compose #Couleur #Chimie #Biologie

0 0 0 0
Post image

Как я пытался чинить анимацию в Jetpack Compose LazyColumn Привет, Хабр! Я Витя Стро е ску, последние пять лет в свободное...

#android #android #development #kotlin #compose #jetpack #compose #lazycolumn #animations #expand #collapse

Origin | Interest | Match

0 0 0 0
Preview
Embedded Android Photo Picker in Jetpack Compose The embedded photo picker is not “a custom gallery UI.” It is the system photo picker rendered inside your UI hierarchy, with the same security and privacy properties as the classic picker, because the system draws it into a dedicated `SurfaceView` (internally attached via `SurfaceView.setChildSurfacePackage`). That architectural choice is what unlocks the core product shift: the user stays in _your_ screen while browsing and selecting, and your app can react to selection updates in real time because your activity remains resumed. The embedded picker is currently supported on **Android 14 (API 34) devices with SDK Extensions 15+**. On devices that don’t meet that bar, Android’s guidance is to rely on the classic photo picker (including backported availability via Google Play services where applicable). Here is a minimal availability helper you can keep near your UI entrypoint: import android.os.Build import android.os.ext.SdkExtensions fun isEmbeddedPhotoPickerAvailable(): Boolean { // Embedded picker requires Android 14+ anyway. if (Build.VERSION.SDK_INT < 34) return false // SDK Extensions are the actual gate for embedded support. return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) >= 15 } ## Compose integration The Jetpack integration for embedded is shipped as `androidx.photopicker`, with a Compose artifact (`photopicker-compose`). dependencies { implementation("androidx.photopicker:photopicker-compose:1.0.0-alpha01") } The Compose entrypoint is the `EmbeddedPhotoPicker` composable and a state holder created via `rememberEmbeddedPhotoPickerState`. The official docs describe the composable as creating a `SurfaceView`, managing the service connection, and plumbing selected URIs back via callbacks. You minSdk has to be at least 34. Below is a Compose-first scaffold that keeps the picker logic isolated and makes the rest of the screen testable. The key points are: keep selected URIs in your own state, let the picker grant/revoke URI permissions through callbacks, and explicitly inform the picker when your container expands/collapses. import android.net.Uri import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) @Composable fun EmbeddedPickerHost( maxSelection: Int = 5, onDone: (List<Uri>) -> Unit, ) { var attachments by remember { mutableStateOf(emptyList<Uri>()) } val scope = rememberCoroutineScope() val sheetState = rememberBottomSheetScaffoldState( bottomSheetState = rememberStandardBottomSheetState( initialValue = SheetValue.Hidden, skipHiddenState = false ) ) // Feature configuration is explicit in the embedded picker sample: // max limit + ordered selection + accent color. // Keep this object stable. val featureInfo = remember { EmbeddedPhotoPickerFeatureInfo.Builder() .setMaxSelectionLimit(maxSelection) .setOrderedSelection(true) .build() } val pickerState = rememberEmbeddedPhotoPickerState( onSelectionComplete = { scope.launch { sheetState.bottomSheetState.hide() } onDone(attachments) }, onUriPermissionGranted = { granted -> attachments = attachments + granted }, onUriPermissionRevoked = { revoked -> attachments = attachments - revoked.toSet() } ) // Keep picker expansion in sync with the container. SideEffect { val expanded = sheetState.bottomSheetState.targetValue == SheetValue.Expanded pickerState.setCurrentExpanded(expanded) } BottomSheetScaffold( scaffoldState = sheetState, sheetPeekHeight = if (sheetState.bottomSheetState.isVisible) 400.dp else 0.dp, sheetContent = { // Dedicated picker surface area. EmbeddedPhotoPicker( modifier = Modifier .fillMaxWidth() .heightIn(min = 240.dp), state = pickerState, embeddedPhotoPickerFeatureInfo = featureInfo ) }, topBar = { TopAppBar(title = { Text("Composer") }) } ) { innerPadding -> Column(Modifier.padding(innerPadding).padding(16.dp)) { Row(horizontalArrangement = Arrangement.spacedBy(12.dp)) { Button(onClick = { scope.launch { sheetState.bottomSheetState.partialExpand() } }) { Text("Add from gallery") } Button( enabled = attachments.isNotEmpty(), onClick = { onDone(attachments) } ) { Text("Send") } } Spacer(Modifier.height(16.dp)) // Your own attachment UI is separate from the picker surface. LazyVerticalGrid( columns = GridCells.Adaptive(minSize = 88.dp), verticalArrangement = Arrangement.spacedBy(8.dp), horizontalArrangement = Arrangement.spacedBy(8.dp), ) { items(attachments) { uri -> AttachmentTile( uri = uri, onRemove = { scope.launch { // Inform the picker that the host UI removed something. pickerState.deselectUri(uri) // Keep host state consistent (deselectUri won't auto-update your list). attachments = attachments - uri } } ) } } } } } @Composable private fun AttachmentTile( uri: Uri, onRemove: () -> Unit ) { // Replace with your image loader. Keep it simple here. Surface( tonalElevation = 2.dp, modifier = Modifier .size(88.dp) .clickable { onRemove() } ) { /* preview */ } } Everything in this skeleton is aligned with the platform guidance: embedded picker is intended to sit inside your UI, selection changes are continuous, and the API surface is built around permission grants/revocations for content URIs instead of broad media permissions. ## Selection synchronization, URI lifetimes, and background work The embedded picker UX is at its best when your host UI and the picker behave like a single selection model. Android’s embedded picker docs call this out explicitly: when a user deselects in _your_ UI, you should notify the picker via `deselectUri` / `deselectUris`. There’s a crucial gotcha: these calls do not automatically trigger your `onUriPermissionRevoked` callback, so you must update your own state explicitly. That behavior is not accidental. It forces you to define ownership: the picker owns what is selectable; your app owns how selection is represented and persisted in your UI. In a messaging composer, the picker is a panel, not the source of truth. The other non-obvious “this will bite you later” concern is URI access lifetime. For the photo picker in general, Android documents that access is granted until the device restarts or until your app stops, and you can persist access longer by calling `takePersistableUriPermission()`. If your UX lets users queue uploads or drafts, this matters immediately. Be aware of the platform cap: Android notes that an app can have up to 5,000 media grants at a time, after which older grants are evicted. That is high enough for typical consumer flows, but it is relevant for apps that treat the picker as an ingestion pipeline. On the test side, the `androidx.photopicker` has a dedicated testing artifact and a `TestEmbeddedPhotoPickerProvider` to support testing flows that rely on the embedded picker. Photo by Ruben Mavarez on Unsplash ### Share this: * Share on X (Opens in new window) X * Share on Reddit (Opens in new window) Reddit * Share on LinkedIn (Opens in new window) LinkedIn * ### _Discover More_

Embedded Android Photo Picker in Jetpack Compose The embedded photo picker is not “a custom gallery UI.” It is the system photo picker rendered inside your UI hierarchy, with the same security ...

#Technology #android #jetpack #compose #kotlin

Origin | Interest | Match

0 0 0 0

🐳 🐙 Docker Compose Tip #37

3 ways to split Compose configs, each works differently!

Override files → project-level merge
extends → service-level inheritance
include → isolated sub-project import

Guide: lours.me/posts/compose-tip-037-include-extends-overrides/

#Docker #Configuration #Compose

7 5 1 0

Chlorhydrate de la chatte

Le chlorhydrate est un composé chimique, souvent utilisé comme sel pour faciliter la solubilité, notamment dans le domaine pharmaceutique. #Chlorhydrate #Compose #Chimique #Solubilité #Pharmaceutique

0 0 0 0

🐳 🐙 Docker Compose tip week starts tomorrow!

This week: a deep dive into managing multiple Compose files.

include, extends, override files — 3 mechanisms that look similar but work very differently.

3 tips, Mon/Wed/Fri. See you tomorrow!

#Docker #Compose #DockerCompose #DevOps

6 4 0 0
Post image

Todo Budget v5.0: переписал весь UI с нуля на Jetpack Compose — и теперь ищу тех, кто его сломает До пятой версии главный экр...

#котлин #мобильная #разработка #приложения #для #android #андроид #kotlin #jetpack #compose #android

Origin | Interest | Match

0 0 0 0
Post image

Todo Budget v5.0: переписал весь UI с нуля на Jetpack Compose — и теперь ищу тех, кто его сломает До пятой версии главный экр...

#котлин #мобильная #разработка #приложения #для #android #андроид #kotlin #jetpack #compose #android

Origin | Interest | Match

0 0 0 0
Post image

How to Use Docker Compose for Production Workloads — with Profiles, Watch Mode, and GPU Support There's a perception problem with Docker Compose. Ask a room full of platform engineers what th...

#Docker #Docker #compose #containers

Origin | Interest | Match

0 0 0 0
Docker Compose Tip #36: Using extra_hosts for custom DNS entries Add custom hostname mappings without modifying system hosts file

🐳 🐙 Docker Compose Tip #36

Custom DNS without touching /etc/hosts!

extra_hosts:
- "api.local:192.168.1.100"
- "host.docker:host-gateway"

Perfect for local development!

Learn: lours.me/posts/compose-tip-036-extra-hosts/

#Docker #Compose #Networking #DNS

7 6 1 0
PolarisMail hiring Kotlin Developer (Compose Multiplatform) in Montreal, Quebec, Canada | LinkedIn Posted 1:10:50 PM. Location: Montreal (Hybrid/Remote)Reporting to: Senior Kotlin Multiplatform DeveloperAbout the…See this and similar jobs on LinkedIn.

If you're interested in building apps with Kotlin Multiplatform and Compose Multiplatform, my team is hiring!

www.linkedin.com/jobs/view/43...

#kotlin #kmp #cmp #compose #androiddev

2 0 0 0
Preview
Docker ARR Stack with Gluetun VPN Linux & Docker Projects for $10-30 USD. I’m putting together a small ARR stack in Docker and need an expert to wire everything so that every outbound request from Prowler



#Containerization #Debian #Docker #Docker #Compose #Linux #System #Admin #Ubuntu #VPN

Origin | Interest | Match

0 0 0 0
Post image

If your Compose app feels slow…
it’s time to open Perfetto 👀

In our next episode, Rahul Ravikumar joins us to talk about:
• tracing
• profiling
• understanding performance in Compose

📅 Live now on Twitch
🎥 cwti.link/twitch

#AndroidDev #Perfetto #Compose

3 0 0 0
Docker Compose Tip #35: Using tmpfs for ephemeral storage Boost performance with in-memory tmpfs mounts for temporary data

🐳 🐙 Docker Compose Tip #35

⚡ RAM-speed storage with tmpfs!

tmpfs:
- /tmp:size=100M
- /app/cache:size=500M

Fast, secure, self-cleaning!

Guide: lours.me/posts/compose-tip-035-tmpfs-storage/

#Docker #Compose #Performance #Storage

7 4 1 0
Preview
Release Kotlin 2.3.20-RC2 · JetBrains/kotlin Changelog Compiler KT-84620 Incorrect optimization of property delegation KT-81974 Do not eagerly initialize reflection for KProperty objects for delegated properties JVM. Reflection KT-84600 Pe...

🚀 Kotlin 2.3.20-RC2 is out!

Fixes for compiler optimizations, JVM reflection performance, Compose bitcode lowering, Gradle memory leaks, and Build Tools API compatibility.

👇
github.com/JetBrains/ko...

#Kotlin #Gradle #Compose #JVM #AndroidDev

0 0 0 0
Docker Compose Tip #34: Debugging with exec vs run Understanding when to use docker compose exec vs run for debugging

🐳 🐙 Docker Compose Tip #34

exec vs run - know the difference!

exec: existing container
run: new container

docker compose exec web bash # Debug running
docker compose run --rm test # One-off task

Details: lours.me/posts/compose-tip-034-exec-vs-run/

#Docker #Compose #Debugging #CLI

5 4 1 0
Preview
Plausible-CE Deployment via Traefik Linux & Docker Projects for $10-30 USD. I already run an Ubuntu server and Traefik is in place as my reverse proxy for a handful of Docker services (docker compose). What



#Containerization #DevOps #Docker #Docker #Compose #Linux #Ubuntu #VPS

Origin | Interest | Match

0 0 0 0

Follow @sinasamaki.com for incredible #jetpack #compose widgets

0 0 0 0
Post image

I never learned to read or #write #music #score. And so sometimes I #compose the music loosely in my head and make notations in #asemic #glyphs then try to translate it back into sound at a later date. Usually incorrectly. #BlueSkyArt
#Art #Dada #drawing #Illustration #absurd #assemblage #SurrealArt

10 0 0 0
Docker Compose Tip #33: Using logging drivers and options Configure logging drivers for better log management and analysis

🐳 🐙 Docker Compose Tip #33

Control your logs!

logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"

Different drivers for different needs!

Guide: lours.me/posts/compose-tip-033-logging-drivers/

#Docker #Compose #Logging #DevOps

11 1 0 0
Join the watermelonKode 🍉 Discord Server! Join Kotlin Multiplatform community! 🤝 Follow latest updates and provide feedbacks about our apps! 🍉 | 7 members

I’ve launched the @watermelonkode.bsky.social 🍉 Discord👋

A space for serious Kotlin Multiplatform builders. 🫵

We’re building VocabKit + more KMP projects. If you build, you’re welcome 🤝

discord.gg/ZtkY5X4ha3 🚀

#kmp #kotlin #kotlinmultiplatform #cmp #compose #androiddev #iosdev

3 1 0 0
Docker Compose Tip #32: Build contexts and dockerignore patterns Optimize build performance with proper context management and .dockerignore patterns

🐳 🐙 Docker Compose Tip #32

Speed up builds with proper .dockerignore!

# .dockerignore
node_modules
.git
*.log
dist

Smaller context = faster builds!

Guide: lours.me/posts/compose-tip-032-build-context-dockerignore/

#Docker #Compose #Performance #Build

3 3 1 0
Post image

KMP, XCode и 5% мазохистов: как мы писали AI-агентов на 4 платформы Все говорят, что AI заменит разработчиков. Я решил...

#java #kotlin #llm #agent #koog #ии-агенты #kotlin #multiplatform #compose #multiplatform #кросплатформенная

Origin | Interest | Match

0 0 0 0
Docker Compose Tip #31: Network isolation between services Isolate services with custom networks for enhanced security

🐳 🐙 Docker Compose Tip #31

Not every service needs to talk to every other service!

networks:
frontend:
backend:
database:
internal: true

Isolate by tier for better security.

Guide: lours.me/posts/compose-tip-031-network-isolation/

#Docker #Compose #Security #Networking

12 8 2 0
Post image

Как я сделал полностью бесплатное Android-приложение для задач и финансов — и почему не взял ни копейки Мне нуж...

#android #kotlin #jetpack #compose #room #бесплатно #задачи #бюджет #помодоро #rustore

Origin | Interest | Match

0 0 0 0
Как я сделал полностью бесплатное Android-приложение для задач и финансов — и почему не взял ни копейки

Как я сделал полностью бесплатное Android-приложение для задач и финансов — и почему не взял ни копейки Пробле...

#android #jetpack #compose #kotlin #room #rustore #бесплатно #бюджет #задачи

Origin | Interest | Match

0 0 0 0
Original post on chaos.social

Dear #mastoadmins, I'd like to improve the current setup using #caddy and #podman #compose. Is anyone using #podman #quadlet with #systemd? Also I understand that having the connection between caddy reverse proxy and mastodon via sockets is very cool and I'd like to give this a try as well […]

0 0 0 0
Preview
Release Kotlin 2.3.20-RC · JetBrains/kotlin Changelog Backend. Wasm KT-82649 K/Wasm: Rewrite StringBuilder to use JsString KT-83995 K/Wasm: 2.3.0 -> 2.3.20-Beta1 degradation in arrow tests KT-83839 K/Wasm: CMP. Load time on Safari significa...

Kotlin 2.3.20-RC is out 🚀

Stability & tooling updates across compiler, Compose, Wasm, JS, Native, and Gradle — plus K2 improvements and Multiplatform build fixes.

👇
github.com/JetBrains/ko...

#Kotlin #Multiplatform #Compose #AndroidDev #Android

2 0 0 0
Preview
GitHub - NicosNicolaou16/PercentagesWithAnimationCompose: This library is designed to provide developers with an easy way to implement percentages with custom Compose views and animations, including l... This library is designed to provide developers with an easy way to implement percentages with custom Compose views and animations, including linear, circular, circle, gradient circle and wave perce...

🚀 PercentagesWithAnimationCompose v1.3.7 is live!

✅ Gradle 9.0.1
✅ Kotlin 2.3.10
✅ Compose BOM 2026.02.00
🧹 Cleaned deprecated code

If you like it & find it useful, support it with a ⭐

🔗 github.com/NicosNicolao...

#AndroidDev #Kotlin #JetpackCompose #OpenSource #Compose

3 0 0 0