• Stars
    star
    2,430
  • Rank 18,170 (Top 0.4 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created over 3 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿš€๐Ÿงจ๐Ÿ“ Series of Tutorials to learn about Jetpack Compose with subjects Material Widgets, Layout, SubcomposeLayout, custom layouts, State, custom rememberable, recomposition, LaunchedEffect, side-effects, Gesture, Animation, Navigation, Canvas, UIs like whatsapp and others.

Jetpack Compose Tutorials and Playground

๐Ÿค“ Overview

Series of Tutorials to learn about Jetpack Compose, Material Widgets, State, Animation, and Navigation. Easy to search in code and in app. Each chapter module contains its own content in code. SearchBar can be used to search with a tag or description available for each tutorial.

Recommended section is under constructions for now, when finished it will get recommended tags using previous searches using a database, domain with ViewModel.





Tutorial Preview

1-1 Column, Row, Box, Modifiers


Create Row that adds elements in horizontal order, and Column that adds elements in vertical order.

โ€ข Column
โ€ข Row
โ€ข Box
โ€ข Modifier

1-2 Surface, Shape, Clickable


Create and modify Surface to draw background for Composables, add click action to any composable. Set weight or offset modifiers.

โ€ข Surface
โ€ข Shape
โ€ข Clickable

Material Widgets

Tutorial Preview

2-1 Text


Create Text component with different properties such as color, background, font weight, family, style, spacing and others

โ€ข Text
โ€ข Row
โ€ข FontStyle
โ€ข Annotated String Hyperlink

2-2 Button, IconButton, FAB, Chip


Create button with text and/or with image, Floating Action Button or Chips. Modify properties of buttons including color, text, and click actions.

โ€ข Button
โ€ข IconButton
โ€ข FloatingActionButton
โ€ข Chip

2-3 TextField


Create TextField component with regular style or outlined. Set error, colors, state, icons, and IME actions.

โ€ข TextField
โ€ข OutlinedTextField
โ€ข IME
โ€ข Phone format VisualTransformation
โ€ข Regex

2-4 Image


Create Image with image, vector resource or with Painter, set image and Content scales to fit, expand or shrink image. Change shape of Image or apply ColorFilter and PorterDuff modes.

โ€ข Image
โ€ข Canvas
โ€ข Drawable
โ€ข Bitmap

2-5 LazyColumn/Row/VerticalGrid


Vertical, horizontal grid lists with LazyColumn, LazyRow and LazyVerticalGrid. Use contentPadding set paddings for lists, verticalArrangement or horizontalArrangement for padding between items, rememberLazyListState to manually scroll.

โ€ข LazyColumn(Vertical RecyclerView)
โ€ข LazyRow(Horizontal RecyclerView
โ€ข LazyVerticalGrid(GridLayout)
โ€ข StickyHeaders

2-6 TopAppbar & Tab


TopAppbar with actions, overflow menus. Tabs with text only, image only and image+text with different background, divider, and indicators.

โ€ข TopAppBar
โ€ข Overflow menu
โ€ข TabRow and Tab
โ€ข Tab Indicator, Divider

2-7 BottomNavigation


Bottom navigation bars allow movement between primary destinations in an app. BottomNavigation should contain multiple BottomNavigationItems, each representing a singular destination.

โ€ข BottomNavigation
โ€ข BottomNavigationItem

2-8 BottomAppBar


A bottom app bar displays navigation and key actions at the bottom of screens.

โ€ข BottomAppBar
โ€ข Scaffold

2-9-1 Side Navigation


A backdrop appears behind all other surfaces in an app, displaying contextual and actionable content.

โ€ข Scaffold
โ€ข Side Navigation
โ€ข DrawerState

2-9-2 ModalDrawer


Modal navigation drawers block interaction with the rest of an appโ€™s content with a scrim. They are elevated above most of the appโ€™s UI and donโ€™t affect the screenโ€™s layout grid.

โ€ข ModalDrawer
โ€ข DrawerState
โ€ข Scaffold

2-10-1 BottomSheet


Create bottom sheet using BottomSheetScaffold and rememberBottomSheetScaffoldState, create modal bottom sheets.

โ€ข BottomSheetScaffold
โ€ข BottomSheetState
โ€ข ModalBottomSheetLayout

2-10-4 BottomDrawer


BottomDrawer with BottomAppBar.

โ€ข BottomDrawer
โ€ข BottomAppBar
โ€ข Scaffold

2-10-5 BackdropScaffold


BackdropScaffold provides an API to put together several material components to construct your screen.

2-11 Snackbar, Progress, Selection


Create Snackbars with various layouts and styling, Checkboxes with selectable text, tri state checkbox, grouped radio buttons and sliders.

โ€ข SnackBar
โ€ข ProgressIndicator
โ€ข Checkbox
โ€ข TriStateCheckbox
โ€ข Switch
โ€ข RadioButton
โ€ข Slider
โ€ข RangeSlider

2-12 Dialog, AlertDialog


Create Dialog, and AlertDialog with standard and custom layouts. Implement on dismiss logic and get result when dialog is closed.

โ€ข AlertDialog
โ€ข Dialog
โ€ข DialogProperties

Layout

Tutorial Preview

3-1-1 Custom Modifier


Create custom layout using using layout, Measurable, Constraint, Placeable.

โ€ข Custom Modifier
โ€ข Measurable
โ€ข Constraint
โ€ข Placeable

3-1-3 graphicsLayer


Use Modifier.offset{} and Modifier.graphicsLayer{} to scale, translate or change other properties of a Composable.

โ€ข Modifier
โ€ข graphicsLayer

3-2-1 Custom Layout


Create custom layout using using MeasurePolicy and use intrinsic dimensions.

โ€ข Custom Layout
โ€ข Measurable
โ€ข Constraint
โ€ข Placeable

3-3-1 Scope&ParentDataModifier


Add custom modifiers to Composable inside a custom layout using its scope like align modifier only available in specific Composable like a custom Column.

โ€ข Custom Layout
โ€ข Scope
โ€ข ParentDataModifier
โ€ข Measurable
โ€ข Constraint
โ€ข Placeable

3-4 BoxWithConstraints


BoxWithConstraints is a composable that defines its own content according to the available space, based on the incoming constraints or the current LayoutDirection.

โ€ข BoxWithConstraints
โ€ข Constraint

3-5 SubcomposeLayout


Subcompose layout which allows to subcompose the actual content during the measuring stage for example to use the values calculated during the measurement as params for the composition of the children.

โ€ข SubcomposeLayout
โ€ข Constraint
โ€ข Measurable
โ€ข Constraint
โ€ข Placeable

3-6-1 Custom Chat Layouts1


Custom layout like whatsapp chat layout that moves time and message read status layout right or bottom based on message width.

โ€ข Custom Layout
โ€ข Measurable
โ€ข Constraint
โ€ข Placeable

3-6-2 Custom Chat SubcomposeLayout


Custom layout like whatsapp chat. Added quote and name tag resized to longest sibling using SubcomposeColumn from previous examples to have whole layout.

โ€ข Custom Layout
โ€ข SubcomposeLayout
โ€ข Measurable
โ€ข Constraint
โ€ข Placeable

State

Tutorial Preview

4-1-1 Remember&MutableState


Remember and mutableState effect recomposition and states.

โ€ข remember
โ€ข State
โ€ข Recomposition

4-2-3 Scoped Recomposition


How hierarchy of Composables effects Smart Composition.

โ€ข remember
โ€ข Recomposition
โ€ข State

4-4 Custom Remember


Create a custom remember and custom component to have badge that changes its shape based on properties set by custom rememberable.

โ€ข remember
โ€ข State
โ€ข Recomposition
โ€ข Custom Layout

4-5-1 SideEffect1


Use remember functions like rememberCoroutineScope, and rememberUpdatedState and side-effect functions such as LaunchedEffect and DisposableEffect.

โ€ข remember
โ€ข rememberCoroutineScope
โ€ข rememberUpdatedState
โ€ข LaunchedEffect
โ€ข DisposableEffect

4-5-2 SideEffect2


Use SideEffect, derivedStateOf, produceState and snapshotFlow.

โ€ข remember
โ€ข SideEffect
โ€ข derivedStateOf
โ€ข produceStateOf
โ€ข snapshotFlow

4-7-3 Compose Phases3


How deferring a state read changes which phases of frame(Composition, Layout, Draw) are called.

โ€ข Modifier
โ€ข Recomposition
โ€ข Composition
โ€ข Layout
โ€ข Draw

Gesture

Tutorial Preview

5-1-1 Clickable


Use clickable modifier, Indication. Indication to clip ripples, or create custom ripple effects.

โ€ข clickable
โ€ข Indication
โ€ข rememberRipple
โ€ข pointerInput
โ€ข pointerInteropFilter

5-1-2 InteractionSource1


Use Interaction source to collect interactions or change scale of Composables based on interaction state.

โ€ข clickable
โ€ข InteractionSource

5-1-3 InteractionSource2


Use InteractionSource to update touch state of multiple Composable or another Composable based on current interaction.

โ€ข clickable
โ€ข InteractionSource

5-2 Tap&Drag Gesture


Use PointerInput to listen press, tap, long press, drag gestures. detectTapGestures is used for listening for tap, longPress, doubleTap, and press gestures.

โ€ข pointerInput
โ€ข pointerInteropFilter
โ€ข detectTapGestures
โ€ข detectDragGestures
โ€ข onPress
โ€ข onDoubleTap

5-3 Transform Gestures


Use PointerInput to listen for detectTransformGesture to get centroid, pan, zoom and rotate params.

โ€ข pointerInput
โ€ข detectTransformGestures
โ€ข centroid
โ€ข pan
โ€ข zoom

5-4-1 AwaitPointerEventScope1


Use AwaitPointerEventScope to get awaitFirstDown for down events, waitForUpOrCancellation for up events, and awaitPointerEvent for move events with pointers.

โ€ข AwaitPointerEventScope
โ€ข PointerInputChange
โ€ข awaitFirstDown
โ€ข waitForUpOrCancellation
โ€ข awaitPointerEvent
โ€ข awaitTouchSlopOrCancellation
โ€ข awaitDragOrCancellation

5-4-3 Centroid, Zoom, Pan, Rotation


Use AwaitPointerEventScope to calculate centroid position and size, zoom, pan, and rotation.

โ€ข AwaitPointerEventScope
โ€ข centroid
โ€ข pan
โ€ข zoom

5-6-2 Gesture Propagation1


Consume different type of touch events in Composable in an hierarchy to display gesture propagation between parent and children with MOVE gestures.

โ€ข AwaitPointerEventScope
โ€ข pointerInput
โ€ข consume
โ€ข consumePositionChange
โ€ข anyChangeConsumed

5-6-4 Transform Propagation


Consume events to rotate, zoom, move or apply drag or move events on Composables.
โ€ข AwaitPointerEventScope
โ€ข detectTransformGestures
โ€ข consume
โ€ข consumePositionChange
โ€ข anyChangeConsumed
โ€ข pan
โ€ข zoom

5-9-4 Collapsing TopAppBar


Create a collapsing TopAppBar using Modifier.nestedScroll and NestedScrollConnection.
โ€ข nestedScroll
โ€ข NestedScrollConnection

5-10-1 Image Touch Detection


Detect touch position on image and get color at touch position.
โ€ข Image
โ€ข AwaitPointerEventScope

5-11 Zoomable LazyColumn


Zoom images inside a LazyColum.
โ€ข Image
โ€ข Zoom
โ€ข AwaitPointerEventScope

Graphics

Tutorial Preview

6-1-1 Canvas Basics 1


Use canvas draw basic shapes like line, circle, rectangle, and points with different attributes such as style, stroke cap, brush.

โ€ข Canvas
โ€ข DrawScope
โ€ข Path
โ€ข Path Effect

6-1-2 Canvas Basics 2


Use canvas to draw arc, with path effect, stroke cap, stroke join, miter and other attributes and draw images with src, dst attributes.

โ€ข Canvas
โ€ข DrawScope
โ€ข Path
โ€ข Path Effect

6-1-3 Canvas Paths


Use canvas to draw path using absolute and relative positions, adding arc to path, drawing custom paths, progress, polygons, quads, and cubic.

โ€ข Canvas
โ€ข DrawScope
โ€ข Path
โ€ข Path Effect

6-1-4 Canvas Path Ops


Use canvas to clip paths, or canvas using path, or rectangle with operations such as Difference, Intersect, Union, Xor, or ReverseDifference..

โ€ข Canvas
โ€ข DrawScope
โ€ข Path
โ€ข PathOperation
โ€ข ClipOperation

6-1-5 Canvas Path Segments


Use canvas to flatten Android Path to path segments and display PathSegment start and/or end points.

โ€ข Canvas
โ€ข DrawScope
โ€ข Path
โ€ข PathSegment

6-1-6 Canvas PathEffect


Use PathEffect such as dashedPathEffect, cornerPathEffect, chainPathEffect and stompedPathEffect to draw shapes add path effects around Composables

โ€ข Canvas
โ€ข DrawScope
โ€ข Path
โ€ข Path Effect

6-2-1 Blend(Porter-Duff) Modes


Use blend(Porter-Duff) modes to change drawing source/destination or clip based on blend mode ,and manipulate pixels.

โ€ข Canvas
โ€ข DrawScope
โ€ข Path
โ€ข Path Effect
โ€ข BlendMode

6-2-3 Multi-Color VectorDrawable


Use blend(Porter-Duff) to create multi colored VectorDrawables or VectorDrawables with fill/empty animations

โ€ข Canvas
โ€ข DrawScope
โ€ข VectorDrawable
โ€ข BlendMode

6-4-2 Drawing App


Draw to canvas using touch down, move and up events using array of paths to have erase, undo, redo actions and set properties for each path separately.

โ€ข Canvas
โ€ข DrawScope
โ€ข Path
โ€ข AwaitPointerEventScope
โ€ข PointerInputChange
โ€ข BlendMode

6-5 Color Picker


Color Picker that calculates angle from center and gets a color using hue and returns a color as in HSL or RGB color model.

โ€ข Canvas
โ€ข DrawScope
โ€ข Path
โ€ข AwaitPointerEventScope
โ€ข PointerInputChange
โ€ข BlendMode

6-6 Scale/Translation Edit


Editable Composable that changes position and scale when touched and dragged from handles or changes position when touched inside.

โ€ข Canvas
โ€ข DrawScope
โ€ข Scale
โ€ข Translate
โ€ข AwaitPointerEventScope
โ€ข PointerInputChange

6-7 Gooey Effect


Create basic Gooey Effect with static circles and one with moves with touch.

โ€ข Canvas
โ€ข DrawScope
โ€ข Gooey
โ€ข Translate
โ€ข AwaitPointerEventScope
โ€ข PointerInputChange

6-8-1 Cutout Arc Shape


Use Path.cubicTo, Path.arcTo to draw cutout shape.

โ€ข Canvas
โ€ข Path
โ€ข Scale

6-9-1 Neon Glow Effect


Use paint.asFrameworkPaint() to create blur effect to mimic neon glow
and infinite animation to dim and glow infinitely.

โ€ข Canvas
โ€ข Path
โ€ข Neon
โ€ข AwaitPointerEventScope
โ€ข PointerInputChange

6-11 Canvas Erase Percentage


Use blend(Porter-Duff) modes with androidx.compose.ui.graphics.Canvas to erase and compare pixels with erased Bitmap to find ou percentage of erased area.

โ€ข ActualCanvas
โ€ข Path
โ€ข AwaitPointerEventScope
โ€ข PointerInputChange

6-12 Diagonal Price Tag


Use Modifier.drawBehind and Modifier.composed to draw diagonal price tag with shimmer effect

โ€ข TextMeasurer
โ€ข Canvas
โ€ข Composed
โ€ข Brush
โ€ข Image

6-13 Border Progress


Use Path segments to create path with progress to display remaining time

โ€ข Canvas
โ€ข Path
โ€ข PathSegment

6-17 Animated Rainbow Border


Draw animated rainbow color border using BlendMode.SrcIn and Modifier.drawWithCache

โ€ข Canvas
โ€ข Shape
โ€ข BlendMode
โ€ข Brush

Stability, Skippable, Restartable

Add snippet below to app's gradle module

subprojects {
 tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
  kotlinOptions {
    if (project.findProperty("composeCompilerReports") == "true") {
      freeCompilerArgs += [
        "-P",
        "plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" +
        project.buildDir.absolutePath + "/compose_compiler"
        ]
      }
      if (project.findProperty("composeCompilerMetrics") == "true") {
        freeCompilerArgs += [
          "-P",
          "plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" +
          project.buildDir.absolutePath + "/compose_compiler"
        ]
      }
    }
  }

And run task to check for compiler reports for stability inside build/compiler_reports

./gradlew assembleRelease -PcomposeCompilerReports=true

Some of the answers i posted on Stackoverflow

Composable Functions, Recomposition

Difference Between Composable and Normal Functions
What does Jetpack Compose remember actually do, how does it work under the hood?
Scoped/Smart Recomposition
Why does mutableStateOf without remember work sometimes?
Lambdas, Scopes, and Recomposition
MutableState vs MutableStateFlow
Destructuring MutableState
Does a 0dp sized composable even get composed
** Jetpack Compose - Recomposition ignoring function parameter
Unable to call @Composable function from remember block
Composable doesn't re-compose on button click
Jetpack Compose - avoid unnecessary recomposition
In compose, why modify the properties of the List element, LazyColumn does not refresh

Composables

How to get exact size without recomposition?
When should I use Android Jetpack Compose Surface composable?
How can I select only 3 element in a grid/list (jetpack compose)?
Android Compose: Difference between LazyColumn and Column with verticalScroll
Remove default padding from CheckBox
How to give different color to textDecoration?
Jetpack compose custom snackbar material 3
How to place hanging icon in upper right corner of Card composable
Icon drawable inside IconButton is black despite it being white
What is clickable indication in jetpack compose?

LaunchedEffect, SideEffect, DerivedStateOf, snapshotFlow

Using SnapshotFlow to observe MutableState changes
Callback function can be changed in Compose? rememberUpdatedState
How can I launch a function only onetime when I use Jetpack Compose?
Does lazyColumn listen for events when items enter or leave the screen
Why do I need use derivedStateOf in Compose?
Click a close button on a bottomsheet to hide it in compose
How to show a composable just for e few seconds?
What would be the most 'lightweight' way to observe current time for a an android composable?
Difference between remember and rememberUpdatedState in Jetpack Compose?
Use of LaunchedEffect vs SideEffect in jetpack compose
Jetpack Compose recomposition race condition
how can I do resend email timer LaunchedEffect
LaunchedEffect vs rememberCoroutineScope. This explanation makes me confused. Please make it clear to me
MutableState callback in non-Composable

Modifiers

Jetpack Compose - Order of Modifiers
Create Custom Modifier
Composed Modifier
Why are the modifier sizes not overwritten?
How to achieve layout with where icon is position absolute on column layout Modifier.offset
Define Custom Boundaries for a Composable GraphicsLayer
Modifier- Is there a way to create and apply a style to multiple elements in Compose like we do with CSS
JetPack Compose - weight() in Row in Card doesn't work
How to calculate empty space in lazy column after last visible item
How To Get The Absolute Position Of My Composable Function/Children?
Use of LaunchedEffect vs SideEffect in jetpack compose

Layout, Constraints

Creating a SearchView
Create custom badges with size and colorful shadows
How to align one item to bottom using weight or Layout
How to create chat bubbles
Custom Tabs
Take screenshot of a Composable
Make last Item of the Compose LazyColumn fill rest of the screen
Row IntrinsicSize.Min not working when the children are async loading images SubcomposeLayout
Observing position of item in Lazy Column in Jetpack Compose
Jetpack Compose width / height / size modifier vs requiredWidth / requiredHeight / requiredSize
Jetpack Compose - layouting reusable components
Can't represent a size of 357913941 in Constraints in Jetpack Compose
Android compose, Indicator size problem with coil

SubcomposeLayout

How does SubcomposeLayout work?
How to create a Slider with SubcomposeLayout
Setting width of 2 buttons with SubcomposeLayout
How to adjust size of component to it's child and remain unchanged when it's child size will change?
Get information about size before is drawn in Compose

Animation

Animating with single recomposition with Canvas
Android Compose create shake animation
Issue with jetpack compose animation performance
animation o a lazycolumn android
Rotate Animation Compose
How to animate Rect position with Animatable?

Gestures

How gestures work in Jetpack Compose and onTouchEvent
Detect which section of image is touched
Detect when the user lifts their finger (off the screen)
How to detect the end of transform gesture in Jetpack Compose?
Combine detectTapGestures and detectDragGesturesAfterLongPress?
What is clickable indication in jetpack compose?
Prevent dragging box out of the screen with Jetpack Compose
JetPack Compose: Adding click duration
compose gestures, zoom in zoom out move and rotation
How to set Double back press Exit in Jetpack Compose?
Jetpack Compose detect drag gesture and detect Interaction source
How can one composible's clicks pass through to a composible underneath?

Canvas, DrawScope

How to apply Porter-Duff mode to image?
How to create drawing app with Jetpack Compose?
How to create HSL saturation and lightness change gradient or brush editor with Jetpack Compose?
How to create Angular gradient in Jetpack compose?
Angled gradient background in Jetpack Compose
how to draw a square with stroke and neon glow with Jetpack Compose Canvas?
Jetpack compose Drawing over shapes in a path
Cubic with Canvas
What is the unit of Canvas's size when I use Compose?
How to draw a multicolored bar with Canvas in Jetpack Compose?
How to clip or cut a Composable with BlendModes?
How to center Text in Canvas in Jetpack compose?
How to divide the stroke of a circle at equal intervals in Jetpack compose canvas?
Jetpack compose custom shape with pie effect
How to apply PathEffect without using Stroke with Jetpack Compose?
Jetpack Compose - CardView with Arc Shape on border
Jetpack Compose: how to cut out card shape?
Jetpack Compose: How to create a rating bar?
Watermark or write on Bitmap with androidx.compose.ui.graphics.Canvas?
Image Cropper
Vertical scroll on Canvas (Jetpack Compose)
Why can I draw a line out of the canvas when I use Jetpack Compose?
implement a spinning activity indicator with Jetpack Compose

Resources and References

Codelab Jetpack Compose Basics
Codelab Jetpack Compose Layouts
Codelab Jetpack Compose States
Codelab Jetpack Compose Advanced State
Developer Android
Developer Android Material
Jetpack Compose Samples
Under the hood of Jetpack Compose โ€” part 2 of 2- Leland Richardson
What is โ€œdonut-hole skippingโ€ in Jetpack Compose?-Vinay Gaba
Android Graphics
Playing with Paths-Nick Butcher
Custom Shape with Jetpack Compose-Julien Salvi
Porter Duff Mode
Porter/Duff Compositing and Blend Modes
Practical Image PorterDuff Mode Usage in Android-Elye
Android Image Lighting Control and Color Filtering-Elye
Android Image Color Change With ColorMatrix-Elye
Manipulating images and Drawables with Androidโ€™s ColorFilter-Nick Rout
Curved (Cut out) Bottom Navigation With Animation in Android
Gooey Effect Using Canvas API In Android
movableContentOf and movableContentWithReceiverOf-Jorge Castillo
Jetpack Compose Stability Explained-Ben Trengrove
Composable metrics-Chris Banes

More Repositories

1

Animation-Tutorials

๐Ÿญ๐Ÿš€๐Ÿ’— Tutorials about animations with Animators, Animated Vector Drawables, Shared Transitions, and more
Kotlin
774
star
2

NavigationComponents-Tutorials

Tutorials about Navigation Components to learn using nav graphs, adding top menus, passing arguments via safe args, combining with different Material Design widgets such as BottomNavigationView, Toolbar, ViewPager2, TabLayout and dynamic feature module navigation with DynamicNavHostFragment and examining Memory Leaks.
Kotlin
375
star
3

Compose-Cropper

๐Ÿš€๐Ÿžโœ‚๏ธ Image cropper that can crop with static, dynamic crop behavior, can use customizable shapes, vectors, and other png files as mask to crop with various customizations
Kotlin
314
star
4

Compose-Image

๐Ÿš€๐Ÿž๐Ÿ’ช Collection of Images, Modifiers, utility functions for Jetpack Compose to expand and enrich displaying, manipulating, scaling, resizing, zooming, and getting cropped ImageBitmap based on selection area
Kotlin
302
star
5

PropertyFindAR

๐Ÿ˜ ๐ŸŽƒ Real Estate Sample App with RxJava3+Coroutines Flow, Dynamic Feature Modules, Dagger Hilt, Offline First, ConcatAdapter, Animations and tests for Room, Retrofit, useCase and ViewModels with TDD.
Kotlin
258
star
6

Compose-Colorful-Sliders

๐Ÿš€๐ŸŒˆ ๐Ÿ˜ Colorful Sliders written with Jetpack Compose that enliven default sliders with track and thumb dimensions, and gradient colors, borders, labels on top or at the bottom move with thumb and ColorfulIconSlider that can display emoji or any Composable as thumb
Kotlin
158
star
7

Toolbar-Samples

Toolbar Samples with TabLayout, CollapsingToolbarLayout and scroll flags, BottomNavigationView, BottomAppBarLayout and Window insets
Kotlin
153
star
8

Compose-Screenshot

๐Ÿš€๐Ÿ“ธ Screenshot Composables and convert to Bitmap or ImageBitmap on user action or periodically.
Kotlin
110
star
9

Compose-BeforeAfter

๐Ÿš€๐ŸŒ†๐Ÿ™ Display differences or animate progress between 2 images or Composables with overlay and customization options, zoom, pan gestures, and progress to observe properties for animating before-after progress
Kotlin
103
star
10

CoroutinesAndFlowTutorials

Series of Tutorials about Coroutines and Flow with Retrofit, Room, and Unit tests.
Kotlin
85
star
11

Compose-AnimatedList

๐Ÿš€๐Ÿ“ฑ๐Ÿ’–Animated LazyColumn/Row changes scale/color with animation and have a current selected item like a Pager. An elegant alternative for selecting from a list
Kotlin
80
star
12

Compose-Drawing-App

โœ๏ธ๐Ÿš€ Drawing app written with Jetpack Compose Canvas. Draw using touch down, move and up events.Using array of paths to have erase, undo, or redo actions and set properties for path that will be drawn next separately.
Kotlin
78
star
13

Compose-Bubble

๐Ÿš€๐Ÿ’ฌ๐Ÿซง Speech/Chat bubble written with Jetpack Compose and canvas with various properties such as arrow width, height, background color, shadow to create similar bubbles whatsapp, telegram or others have.
Kotlin
72
star
14

Posts-MVVM-DaggerHilt-Dynamic-Feature-RxJava3-Flow-Sample

Posts Api sample with Kotlin RxJava3/Coroutines Flow, Clean Architecture, Offline first/last with Room + Retrofit2, Dagger Hilt, Dynamic Feature Modules, Static Code Analysis, Gradle DSL, MockK+ MockWebServer with Test Driven Development including Api and Database tests
Kotlin
71
star
15

Compose-Extended-Gestures

Counterpart of onTouchEvent, TouchDelegate, Transform gestures that notifies start, end, main pointer, pointers and option to consume PointerInputChange which defines whether other gestures should receive or not.
Kotlin
71
star
16

Compose-Color-Picker-Bundle

๐Ÿš€๐ŸŒˆ ๐ŸŽจ Collection of Color Pickers written with Jetpack Compose with solid Color or Gradient with type, tile mode, and color stops in HSL/HSV/RGB models with Colorful Sliders, displays, and many customization options.
Kotlin
60
star
17

Compose-ProgressIndicator

๐Ÿš€๐Ÿšฅโ˜„๏ธ Customizable progress indicators like on ios/mac/web, circle, scaled circle, gooey(sticky) indicators and dot indicators written with Jetpack Compose
Kotlin
49
star
18

Compose-Zoom

๐Ÿš€๐Ÿž๐Ÿ” Zoom Modifiers, zoomable image and layouts with limit pan bounds, fling and moving back to valid bounds and callbacks that return current transformation or visible image section
Kotlin
48
star
19

Flexible-Chat-Box

Flexible chat row written with Jetpack Compose that positions message and message status based on number of message lines, message width and parent width. And resizable Subcomposelayout that remasures sibling composables to match their widths' to longest composable that matches quote and message width to max width.
Kotlin
46
star
20

Compose-RatingBar

๐Ÿš€โญ๏ธ๐Ÿ‘ Rating bar to set fixed value or change rating using gestures with png or vector drawables and shimmer effect option
Kotlin
43
star
21

Compose-Extended-Colors

๐Ÿš€๐ŸŒˆโ™พ Utility library that expands Compose Colors with Material Design2 colors, color swatches, Material Design 3 Tonal Palettes, color names, and utility functions to convert between HSL, HSV, RGB, HCT models and to HEX or from HEX
Kotlin
35
star
22

Compose-Color-Detector

๐Ÿš€๐ŸŒˆ๐Ÿ” Detect colors from image or your screen after taking it's screenshot and get details as name, hex code, RGB, HSL. Written with Jetpack Compose and Material Design 3
Kotlin
25
star
23

Unit-Test-Tutorials

Series of Tutorials for Unit Testing in Java and Kotlin using JUnit4, JUnit5, Mockito, MockK and Test Driven Development
Kotlin
24
star
24

Dagger2-Tutorials

Series of tutorials for learning Dagger2, including dagger hilt, dynamic feature, dagger-android, dependent components, subcomponents and more
Kotlin
19
star
25

Android-DaggerHilt-DynamicFetureModule-Boilerplate

Boilerplate to create empty project with Dagger Hilt, Dynamic Feature modules, MVVM, RxJava, Coroutines with modularization
Kotlin
17
star
26

Kotlin-Tutorials

Series of Kotlin Tutorials
Kotlin
13
star
27

Compose-PagerIndicator

๐Ÿš€๐Ÿ“’๐Ÿ“ Indicators for Horizontal or Vertical Pager with different orientation, color, size options and optional touch feature.
Kotlin
12
star
28

BubbleLayout

๐Ÿ’ฌ Chat/Speech bubble layout with various properties such as arrow width, height, background color, shadow to create similar bubbles whatsapp, telegram or others have.
Kotlin
11
star
29

MVVM-Tutorials

Series of tutorials about MVVM, data binding and Room and LiveData.
Java
10
star
30

SAF-and-Scoped-Storage-Tutorials

Tutorials, utilities and playground for storing files with File, DocumentFile and Storage Access Framework
Java
9
star
31

Compose-Badge

โœ๏ธ๐Ÿ“Œ Dynamic Badge with customizable features as max number before displaying with +, color, shadow, border, corner radius, font properties and more written with Jetpack Compose. Displays numbers either in circle or rounded rectangle shape based on badge count and selected threshold to transform from circle to rounded rectangle.
Kotlin
9
star
32

Compass-with-pixel-perfect

Elegant Compass View uses percentages instead of fixed values to draw components to have similar scales in both portrait and landscape orientations.
Kotlin
8
star
33

SmartToolFactory

8
star
34

BadgeTextView

โœ…โœ๏ธ๐Ÿ“Œ Badge TextView for Android to draw numbers on a TextView which is customizable and scalable. Displays numbers either as circle or rounded rectangle depending on badge count and selected threshold to transform from circle to rounded rectangle.
Kotlin
7
star
35

Transactional-Key-Value-Store

Transactional Key Value Store written with Jetpack Compose
Kotlin
6
star
36

DataStructuresAndAlgorithmsPlayground

Playground fo data structures and algorithms
Kotlin
6
star
37

My-Market-App

Android Challange 2019 - Market App with Kotlin, Room, Retrofit, Dagger, DataBinding, MVVM Clean Architecture with offline first
Kotlin
5
star
38

Static-Code-Analysis

Playground to test KtLint, Detekt, Git Hooks, Kotlin DSL
Kotlin
4
star
39

Github-Example

Github Example with MVVM, Dagger, RxJava, Retrofit, Navigation Components written with TDD
Kotlin
4
star
40

PhoneNumberCheck

PhoneUtilTest
Kotlin
3
star
41

The-Movie-DB-Example

Movie App Sample with MVVM clean arcitecture, Dagger2, Retrofit, RxJava2, DataBinding and Pagination
Kotlin
3
star
42

Room-Persistence-Library-Tutorials

Series of Tutorials about Room Persistance Library Tutorials
Java
2
star
43

RxJava-Tutorials

Tutorials about RxJava2
Kotlin
2
star
44

HopinStream

Hopin virtual event sample
Kotlin
2
star
45

Dynamic-Features-Tutorial

Series of tutorials about dynamic features and split install
Kotlin
2
star
46

Paging-Library-Tutorials

Paging Library Tutorials with only DB, only network and DB + Network
Kotlin
1
star
47

Bluetooth-LE-Smart-Tutorials

Tutorials about Bluetooth LE
Java
1
star
48

RxAndroid-Kotlin-Tutorials

RxJava Tutorials in Android Environment
Kotlin
1
star
49

RxJava-Style-LiveData-And-Flow-TestObserver

TestObserver class for LiveData to test multiple values like ViewState such as loading, and result states or multiple post and setValues
Kotlin
1
star
50

Answers-for-3-algorithm-questions

Kotlin
1
star
51

Flavors-and-Server-Driven-UI

Sample to create UI elements and enable/disable features based on flavors and Server driven updates. Create new UI or change position of elements based on parsing JSON filed downloaded by remote service such as Firebase or dedicated domain.
Kotlin
1
star