Sample app for Jetpack Compose Developer Preview 2

Overview

Materials Shop

Sample app for Jetpack Compose (1.0.0-alpha03). This repository contains the source code of the demo application shown in the following videos:

Materials Shop demo

Requirements

Android Studio 4.2 Canary or newer.

Features and integrations

This sample application shows how to use the following libraries and features:

  • Jetpack Compose
    • Scrolling list (LayColumnItems)
    • Animations
    • ConstraintLayout
    • Interoperability with android.view
    • IDE previews
  • Room: data persistence
  • LiveData: lifecycle-aware observables
  • Filament: real-time physically based 3D rendering

License

The background image courtyard_8k is licensed under CC0 by Greg Zaal.

Please see LICENSE for the source code's license.

Comments
  • crash

    crash

    image

    AndroidView({ context -> LayoutInflater.from(context).inflate( R.layout.filament_host, FrameLayout(context), false ).apply { val (engine) = scenes[product.material]!! modelViewer = ModelViewer(engine, this as SurfaceView).also { setupModelViewer(it) } } })

    com.curiouscreature.compose E/AndroidRuntime: FATAL EXCEPTION: main Process: com.curiouscreature.compose, PID: 9423 java.lang.NullPointerException at androidx.compose.ui.platform.AndroidViewsHandler.onDescendantInvalidated(AndroidViewsHandler.kt:43) at com.huawei.hwaps.HwApsImpl.isNonEmptyFrameCase(HwApsImpl.java:338) at android.view.ViewGroup.invalidateChild(ViewGroup.java:6142) at android.view.View.invalidateInternal(View.java:17779) at android.view.View.invalidate(View.java:17730) at android.view.View.setFrame(View.java:22300) at android.view.SurfaceView.setFrame(SurfaceView.java:389) at android.view.View.layout(View.java:22144) at androidx.compose.ui.viewinterop.AndroidViewHolder.onLayout(AndroidViewHolder.kt:105) at android.view.View.layout(View.java:22147) at android.view.ViewGroup.layout(ViewGroup.java:6493) at androidx.compose.ui.node.ViewInteropKt.layoutAccordingTo(ViewInterop.kt:163) at androidx.compose.ui.node.ViewInteropKt.access$layoutAccordingTo(Unknown Source:0) at androidx.compose.ui.node.ViewInteropKt$toLayoutNode$4$measure$1.invoke(ViewInterop.kt:151) at androidx.compose.ui.node.ViewInteropKt$toLayoutNode$4$measure$1.invoke(Unknown Source:3) at androidx.compose.ui.MeasureScope$layout$1.placeChildren(MeasureScope.kt:73) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:879) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(Unknown Source:0) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:132) at androidx.compose.ui.platform.AndroidComposeView.observeLayoutModelReads(AndroidComposeView.kt:448) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:866) at androidx.compose.ui.node.InnerPlaceable.place(InnerPlaceable.kt:128) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.OuterMeasurablePlaceable.place(OuterMeasurablePlaceable.kt:114) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:168) at androidx.compose.foundation.layout.StackKt$Stack$1$1$6.invoke(Stack.kt:89) at androidx.compose.foundation.layout.StackKt$Stack$1$1$6.invoke(Unknown Source:3) at androidx.compose.ui.MeasureScope$layout$1.placeChildren(MeasureScope.kt:73) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:879) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(Unknown Source:0) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:132) at androidx.compose.ui.platform.AndroidComposeView.observeLayoutModelReads(AndroidComposeView.kt:448) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:866) at androidx.compose.ui.node.InnerPlaceable.place(InnerPlaceable.kt:128) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) 2020-08-19 14:48:40.978 9423-9423/com.curiouscreature.compose E/AndroidRuntime: at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.OuterMeasurablePlaceable.place(OuterMeasurablePlaceable.kt:114) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:168) at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasureBlocks$1$4.invoke(RowColumnImpl.kt:238) at androidx.compose.foundation.layout.RowColumnImplKt$rowColumnMeasureBlocks$1$4.invoke(Unknown Source:3) at androidx.compose.ui.MeasureScope$layout$1.placeChildren(MeasureScope.kt:73) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:879) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(Unknown Source:0) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:132) at androidx.compose.ui.platform.AndroidComposeView.observeLayoutModelReads(AndroidComposeView.kt:448) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:866) at androidx.compose.ui.node.InnerPlaceable.place(InnerPlaceable.kt:128) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.OuterMeasurablePlaceable.place(OuterMeasurablePlaceable.kt:114) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:168) at androidx.compose.material.SurfaceKt$SurfaceLayout$1$1$2.invoke(Surface.kt:134) at androidx.compose.material.SurfaceKt$SurfaceLayout$1$1$2.invoke(Unknown Source:3) at androidx.compose.ui.MeasureScope$layout$1.placeChildren(MeasureScope.kt:73) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:879) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(Unknown Source:0) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:132) at androidx.compose.ui.platform.AndroidComposeView.observeLayoutModelReads(AndroidComposeView.kt:448) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:866) at androidx.compose.ui.node.InnerPlaceable.place(InnerPlaceable.kt:128) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.node.LayerWrapper.place(LayerWrapper.kt:76) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) 2020-08-19 14:48:40.979 9423-9423/com.curiouscreature.compose E/AndroidRuntime: at androidx.compose.ui.node.LayerWrapper.place(LayerWrapper.kt:76) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.Placeable$PlacementScope.placeAutoMirrored(Placeable.kt:180) at androidx.compose.ui.Placeable$PlacementScope.place(Placeable.kt:154) at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke(LayoutPadding.kt:175) at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke(Unknown Source:3) at androidx.compose.ui.MeasureScope$layout$1.placeChildren(MeasureScope.kt:73) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.OuterMeasurablePlaceable.place(OuterMeasurablePlaceable.kt:114) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:168) at androidx.compose.foundation.lazy.LazyForState$measure$1$2.invoke(LazyForState.kt:364) at androidx.compose.foundation.lazy.LazyForState$measure$1$2.invoke(Unknown Source:3) at androidx.compose.ui.MeasureScope$layout$1.placeChildren(MeasureScope.kt:73) at androidx.compose.ui.layout.SubcomposeLayoutState$createMeasureBlocks$1$measure$1.placeChildren(SubcomposeLayout.kt:228) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(LayoutNode.kt:879) at androidx.compose.ui.node.LayoutNode$layoutChildren$1.invoke(Unknown Source:0) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:1668) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:127) at androidx.compose.ui.platform.AndroidComposeView.observeLayoutModelReads(AndroidComposeView.kt:448) at androidx.compose.ui.node.LayoutNode.layoutChildren$ui_release(LayoutNode.kt:866) at androidx.compose.ui.node.InnerPlaceable.place(InnerPlaceable.kt:128) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.Placeable$PlacementScope.placeAutoMirrored(Placeable.kt:180) at androidx.compose.ui.Placeable$PlacementScope.place(Placeable.kt:154) at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke(LayoutPadding.kt:175) at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke(Unknown Source:3) at androidx.compose.ui.MeasureScope$layout$1.placeChildren(MeasureScope.kt:73) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.node.LayerWrapper.place(LayerWrapper.kt:76) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper$performMeasure$1.placeChildren(DelegatingLayoutNodeWrapper.kt:114) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) 2020-08-19 14:48:40.979 9423-9423/com.curiouscreature.compose E/AndroidRuntime: at androidx.compose.ui.Placeable$PlacementScope.placeAutoMirrored(Placeable.kt:180) at androidx.compose.ui.Placeable$PlacementScope.place(Placeable.kt:154) at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke(LayoutPadding.kt:175) at androidx.compose.foundation.layout.PaddingModifier$measure$1.invoke(Unknown Source:3) at androidx.compose.ui.MeasureScope$layout$1.placeChildren(MeasureScope.kt:73) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.place(DelegatingLayoutNodeWrapper.kt:101) at androidx.compose.ui.Placeable$PlacementScope.placeAbsolute(Placeable.kt:176) at androidx.compose.ui.node.OuterMeasurablePlaceable.place(OuterMeasurablePlaceable.kt:114) at androidx.compose.ui.node.OuterMeasurablePlaceable.replace(OuterMeasurablePlaceable.kt:122) at androidx.compose.ui.node.LayoutNode.replace$ui_release(LayoutNode.kt:798) at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureAndLayout(MeasureAndLayoutDelegate.kt:214) at androidx.compose.ui.platform.AndroidComposeView.measureAndLayout(AndroidComposeView.kt:367) at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.kt:492) at android.view.View.draw(View.java:21654) at android.view.View.updateDisplayListIfDirty(View.java:20511) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4586) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4559) at android.view.View.updateDisplayListIfDirty(View.java:20469) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4586) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4559) at android.view.View.updateDisplayListIfDirty(View.java:20469) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4586) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4559) at android.view.View.updateDisplayListIfDirty(View.java:20469) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4586) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4559) at android.view.View.updateDisplayListIfDirty(View.java:20469) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4586) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4559) at android.view.View.updateDisplayListIfDirty(View.java:20469) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:584) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:590) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:668) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3895) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3703) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2992) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1879) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8170) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1057) at android.view.Choreographer.doCallbacks(Choreographer.java:875) at android.view.Choreographer.doFrame(Choreographer.java:776) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1042) at android.os.Handler.handleCallback(Handler.java:900) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8347) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

    opened by lengjiye-lz 1
  • Unable to run on Android Studio Arctic Fox | 2020 | 3.1 Canary 4

    Unable to run on Android Studio Arctic Fox | 2020 | 3.1 Canary 4

    When I try to open the project in Arctic Fox, I get the following error message: "The project is using an incompatible version (4.2.0-alpha12) of the Android Gradle plugin." "Upgrade to the latest version".

    However, clicking on Upgrade, nothing happens.

    I tried to update manually, in build.gradle.kts, but this throws up multiple errors in the gradle files.

    opened by gputhige 0
  • Update AGP + Compose + Kotlin version

    Update AGP + Compose + Kotlin version

    I had a bug using the way to do this example on the latest version of compose so I needed to update the sample to understand why. It is when we put uiHelper.isOpaque = true Currently the version of AGP 4.2.0 no longer allows build on recent Android Studio. I took the opportunity to update different libs and plugins so that it could build on Android Studio 2021.2.1. Changed -AGP 7.0.4 -filament 1.25.3 -compose 1.2.0 -kotlin 1.7.0 for compatibility with compose -room 2.4.3 for Apple M1 Chips

    opened by MichaelOliveiraBx 0
  • Android Studio Electric Eel | 2022.1.1 Canary 2  run this demo is error

    Android Studio Electric Eel | 2022.1.1 Canary 2 run this demo is error

    Android Studio Electric Eel | 2022.1.1 Canary 2 Build #AI-213.7172.25.2211.8571212, built on May 11, 2022 Runtime version: 11.0.13+0-b1751.21-8125866 x86_64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. macOS 12.4 GC: G1 Young Generation, G1 Old Generation

    kdk2

    opened by caorm 0
  • Android Studio Arctic Fox | 2020 | 3.1 Canary 4.

    Android Studio Arctic Fox | 2020 | 3.1 Canary 4.

    When I try to open the project in Arctic Fox, I get the following error message: "The project is using an incompatible version (4.2.0-alpha12) of the Android Gradle plugin." "Upgrade to the latest version".

    However, clicking on Upgrade, nothing happens.

    I tried to update manually, in build.gradle.kts, but this throws up multiple errors in the gradle files.

    opened by gputhige 1
Owner
Romain Guy
Engineering director at Google on Android
Romain Guy
This is a sample app(For beginners - App #2) built using Jetpack Compose. It demonstrates the concept of State Hoisting in Jetpack Compose.

JetBMICalculator This is a sample app(For beginners - App #2) built using Jetpack Compose. It demonstrates the concept of State Hoisting in Jetpack Co

BHAVNA THACKER 3 Dec 31, 2022
projeto replicado do pathways do Developer.android com estudo de Jetpack-Compose

ListConversationCompose Projeto replicado do pathways do Developer.android com estudo de Jetpack-Compose Tutorial do Jetpack Compose O Jetpack Compose

Luiz Correa 1 Dec 9, 2021
https://developer.android.com/codelabs/jetpack-compose-theming

Jetpack Compose Theming Codelab This folder contains the source code for the Jetpack Compose Theming codelab. In this codelab you will learn how to us

Carlos Barrios 1 May 6, 2022
Navigation-Compose - A sample to showcase Kotlin, MVVM, Hilt, Coroutines, StateFlow, Jetpack compose

Navigation-Compose A sample to showcase Kotlin, MVVM, Hilt, Coroutines, StateFlo

Mohammadali Rezaei 6 Jul 13, 2022
This is a sample app(For beginners - App #1) built using Jetpack Compose

This is a sample app(For beginners - App #1) built using Jetpack Compose. It is a simple - single screen app to demonstrate use of basic Jetpack Compose UI elements like Text, Image and Button & LazyColumn (Vertical Recyclerview). It also demonstrates how compose manages state with a Boolean State.

BHAVNA THACKER 3 Apr 3, 2022
🗺 Android Developer Roadmap 2022 suggests learning paths to understanding Android development.

Android Developer Roadmap 2022 English | 한국어 Android Developer Roadmap 2022 suggests learning paths to understanding Android development. You can read

Jaewoong Eum 5.2k Jan 8, 2023
Learn Jetpack Compose for Android by Examples. Learn how to use Jetpack Compose for Android App Development. Android’s modern toolkit for building native UI.

Learn Jetpack Compose for Android by Examples. Learn how to use Jetpack Compose for Android App Development. Android’s modern toolkit for building native UI.

MindOrks 382 Jan 5, 2023
A sample of how to implement a design system in Jetpack Compose

[WIP] Sample Design System This project aims to hold an example of how to implement a design system with Jetpack Compose. At this moment it only has t

Fábio Carballo 4 Dec 2, 2021
Android Sample Kotlin+ MVI + Jetpack compose + Coroutines + Retrofit + Hilt + Room + Navigation component

MVIComposeSample Android Sample app to show user latest movies implementing MVI + Clean Architecture using kotlin & Jetpack compose following solid an

Ahmed Atwa 10 Dec 28, 2022
Schedule sample to play with Jetpack Compose Desktop

Schedule sample to play with Jetpack Compose Desktop

符号 6 Nov 5, 2022
A sample project in Kotlin to demonstrate Jetpack Compose, MVVM, Coroutines, Hilt, Room, Coil, Retrofit, Moshi, Leak Canary and Repository pattern

Jetpack-Compose-Boilerplate This repository contains a sample project in Kotlin to demonstrate Jetpack Compose, MVVM, Coroutines, Hilt, Room, Coil, Re

Areg Petrosyan 14 Dec 12, 2022
Sample of usage VisualFSM for Android application - Kotlin Coroutines, Jetpack Compose

Sample of usage VisualFSM for Android application - Kotlin Coroutines, Jetpack Compose ENG | RUS VisualFSM is a Kotlin library that implements an MVI

Kontur Mobile 10 Nov 8, 2022
Sample repo that demonstrates various options for testing Jetpack Compose applications.

Composing With Confidence This is the sample repository for the Composing With Confidence presentation from Droidcon NYC in 2022. If you run the sampl

Adam McNeilly 9 Dec 2, 2022
Jetpack Compose Boids | Flocking Insect 🐜. bird or Fish simulation using Jetpack Compose Desktop 🚀, using Canvas API 🎨

?? ?? ?? Compose flocking Ants(boids) ?? ?? ?? Jetpack compose Boids | Flocking Insect. bird or Fish simulation using Jetpack Compose Desktop ?? , usi

Chetan Gupta 38 Sep 25, 2022
A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose cookbook or play-ground if you want!

Why Not Compose! A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose cookbook or play-ground if you want!

Md. Mahmudul Hasan Shohag 186 Jan 1, 2023
Jetpack-Compose-Demo - Instagram Profile UI using Jetpack Compose

Jetpack-Compose-Demo Instagram Profile UI using Jetpack Compose

omar 1 Aug 11, 2022
Jetpack-compose-animations-examples - Cool animations implemented with Jetpack compose

Jetpack-compose-animations-examples This repository consists of 4 animations: St

Canopas Software 180 Jan 2, 2023
Compose-navigation - Set of utils to help with integrating Jetpack Compose and Jetpack's Navigation

Jetpack Compose Navigation Set of utils to help with integrating Jetpack Compose

Adam Kobus 5 Apr 5, 2022
Jetpack-compose-uis - A collection of some UIs using Jetpack Compose. built using Katalog

Jetpack Compose UIs This is a collection of some UIs using Jetpack Compose. It i

Mori Atsushi 3 Dec 15, 2022