Page Curl

Page Curl library for Jetpack Compose.

Motivation

This library allows to create an effect of turning pages, which can be used in book reader applications, custom on-boarding screens or elsewhere.

Usage

Get a dependency

Step 1. Add the JitPack repository to your build file. Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Step 2. Add the dependency. Check latest version on the releases page.

dependencies {
    implementation 'com.github.oleksandrbalan:pagecurl:$version'
}

Use in Composable

The PageCurl has 2 mandatory arguments:

  • state - The state of the PageCurl. Use it to programmatically change the current page or observe changes, and to configure shadow, back-page and interactions.
  • content - The content lambda to provide the page composable. Receives the page number.
val pages = listOf("One", "Two", "Three")
val state = rememberPageCurlState(max = pages.size)
PageCurl(state = state) { index ->
    Box(
        contentAlignment = Alignment.Center,
        modifier = Modifier
            .background(MaterialTheme.colors.background)
            .fillMaxSize()
    ) {
        Text(
            text = pages[index],
            style = MaterialTheme.typography.h1,
        )
    }
}

See Demo application and examples for more usage examples.

Simple.Page.Curl.mp4
Shadow.Configuration.mp4
Back.Page.Configuration.mp4