Skip to content
Mastering Android navigation 🐿
Branch: 1.x
Clone or download
Latest commit 0132648 May 19, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Remove jvm options from CircleCI config May 19, 2019
.github Update issue templates Dec 6, 2018
.ops Include docs module in main branch Apr 30, 2019
core Introduce the experimental AcornEvents API Apr 7, 2019
docs Update Orchid to 0.16.10 May 19, 2019
ext Don't use replay(1) to cache View references May 8, 2019
gradle/wrapper Update Gradle wrapper to 5.4.1 May 19, 2019
samples Include a supports method in SceneTransitionFactory Apr 29, 2019
.gitattributes Update .gitattributes Dec 10, 2018
.gitignore Include gradle build environment options May 19, 2019
LICENSE Apply Apache License 2.0 Dec 26, 2018 Include docs module in main branch Apr 30, 2019
build.gradle Update Android gradle plugin to 3.4.1 May 19, 2019
dependencies.gradle Update Android core ktx to 1.0.2 May 19, 2019 Include gradle build environment options May 19, 2019
gradlew Update Gradle wrapper to 5.4.1 May 19, 2019
gradlew.bat Update Gradle wrapper to 5.4.1 May 19, 2019 Initial version Aug 22, 2018
settings.gradle Include docs module in main branch Apr 30, 2019
test Introduce experimental ConcurrentPairNavigator Apr 7, 2019


Acorn is a carefully designed library that brings true modularity to your presentation layer and allows you to have full control over your transition animations.

Activities and Fragments restrict application development in such a way that creating modular, testable components becomes a difficult thing to do. Furthermore, implementing transition animations to visualize going from one screen to another with either of these components is non trivial.

Acorn provides modularity by grouping specific sets of screens together as building blocks, building up your application into several composable flows.
The view layer is decoupled from navigation and reacts to screen changes, giving you full control over transition animations.

You can read more about Acorn on the documentation website.

Easy setup Maven Central

Acorn is hosted on Maven Central.

To get started quickly, you can include the ext-acorn-android dependency, which includes the necessary base to create an app using Acorn.

implementation "com.nhaarman.acorn.ext:acorn-android:x.x.x"

If you use androidx.appcompat, you can use ext-acorn-android-appcompat instead:

implementation "com.nhaarman.acorn.ext:acorn-android-appcompat:x.x.x"

Using the dependencies above will transitively pull all other dependencies you need as well.

For more advanced configuration, see Setup.

Getting started

Acorn has several sample projects introducing the different concepts. You can also visit the Getting started documentation page for more information.

Building Acorn

Acorn is built with Gradle.

  • Running ./gradlew test will run all JVM tests;
  • Running ./gradlew pitest will generate PIT testing reports for JVM modules;
  • Running ./test will run the entire test suite, you will need to have a connected Android device with API 23+.
  • Running ./gradlew publishToMavenLocal will install a copy of all the libraries in your local maven repository.


Acorn follows semantic versioning, and will determine the version number based on git tags.

Warning! Acorn's API may not have stabilized yet, and breaking API changes may occur until 1.0 is reached.


Acorn uses ktlint which is enforced in CI.

You can’t perform that action at this time.