MoviesApp is the sample preview app of the MotionLayout experiments.

Overview

Movies. App

Movies. is the sample preview app of the MotionLayout experiments.
This app realizes the InVision Studio β€” Movies app concept.

Result Update #1

Design Code
  • Added the relative transition change of the Movie carousel progress, and the Movie details bottom info progress.
  • Added the relative transition change of the Movie carousel progress, and the Movie rating progress.
  • Tuned some Movie carousel transitions values.
  • Fixed the movie description transition.

Result

Design Code

Features

  • Advanced animation examples by only using the ConstraintLayout and MotionLayout APIs.
  • The nested MotionLayouts are decorated as CustomViews. It is possible to have multiple MotionLayouts on the same screen and manipulate them in your own manner.
  • The multiple Carousels relations and progress transitions examples.
  • The examples of switching and propagating the progress between the transitions programmatically.
  • Great staggered animation example and its REAL usage.

MotionLayout Advantages:

  • Animates the default scenarios easily and with the advanced preview/editor.
  • Possibility to decouple MotionLayouts into the nested ones (f.e. CustomView).
  • The ImageFilterView is kinda of a cherry on top, across the MotionLayout helpers.
  • Possibility to run different and nested MotionLayouts transitions simultaneously.
  • Decouples the animation stuff from the code to the motion scene file.
  • Ability to transition the custom views and their attributes.
  • Staggered animations and their manipulation.

MotionLayout Disadvantages:

  • The advanced animation cases currently hard to achieve, especially with the multitouch.
  • The Carousel does not provide a quick solution, it is better to use ViewPager or RecyclerView.
  • The MotionLabel is BUGGY/artifacty inside the transition and does not support the custom fonts.
  • The multitouch support requires a lot of improvements. It is not possible to properly have vertical/horizontal swipe and clicks simultaneously.
  • And again, Carousel with the swipe and click, is the functionality we lack.
  • The NestedScrollView/nested scroll inside the transition is not working. It is better to use AppBar/ CollapsingToolbar.
  • Sometimes MotionLayout draws some artifacts on quick transitions switch.
  • Editor does not invalidate the cache, and it forces reloading Android Studio frequently.
  • The ConstraintSet/Constraint overrides sometimes does not work properly, so it forces to rewrite the whole Constraint from the original state.
  • Lack of functionality to properly set/switch between the transitions. Right now it works the best when you have one scene with one transition.
  • It is not possible to extend the MotionLayout as the CustomView, because there is not such a method to set the scene programmatically. It forces to wrap the MotionLayout into the FrameLayout or other.
  • It still in beta, so it requires the last beta/alpha Android Studio build.
  • Lack of the possibility to chain/reference multiple/nested MotionLayouts. For example, if you want to animate the main transition and with it propagate the animation state to the others.

Summary

The MotionLayout is an amazing solution for simple and advanced screen animations. It works well for the single transition to the end and back, but when there are multiple transitions the problems could occur. It has the handy scene editor under the hood, so it is useful to test transitions inside the Android Studio. The other advantage of the MotionLayouts is the ability to decouple them into the CustomViews. Also, MotionLayout supports touch events, like click and swipe, but I would not recommend them right now, because it still buggy, especially inside the Carousel. The following helpers Carousel and MotionLabel are not worth it for now, because the API is not completed yet and they contain some real issues. On the other hand, the ImageFilterView and MotionEffect do the job properly. In my opinion, MotionLayout should be used for some stunning screen animations, where no touch events included, for example splash screen, tutorial screen, or dashboard screen.

Environment

This sample app uses the following ConstrainLayout version:

dependencies {
    implementation("androidx.constraintlayout:constraintlayout:2.1.0-beta02")
}

Also, this sample app requires a Android Studio Beta - Arctic Fox.

Credits

Special thanks to the Charles Patterson.

Author:

Basil Miller
[email protected]

You might also like...
Hands-on experiments to demonstrate the exploitability of insecure TLS configurations in Android apps

Containerized Demo for Insecure TLS Certificate Checking in Android Overview Thi

KoltinPulsar - A collection of experiments using Kotlin with Apache Pulsar

Some Experiments of using Kotlin and Apache Pulsar This is a collection of exper

Just few experiments with Jetpack Compose
Just few experiments with Jetpack Compose

Jetpack_Compose_Demo Just few fun experiments with Jetpack Compose. Note : This is not a serious app. πŸ™‚ Tutorial (By Philipp Lackner ) : https://yout

KorGE - JetPack Compose experiments

korge-compose KorGE - JetPack Compose experiments Exploration repository to answer some questions and figure out what can we achieve: Using @Composa

This project is focused on the sample using the API's new preview version of Android-L, use of transitions, shadows etc...

Android L preview example Description This project is focused on the sample using the API's new preview version of Android-L, use of transitions, shad

This project is focused on the sample using the API's new preview version of Android-L, use of transitions, shadows etc...

Android L preview example Description This project is focused on the sample using the API's new preview version of Android-L, use of transitions, shad

This project is focused on the sample using the API's new preview version of Android-L, use of transitions, shadows etc...

Android L preview example Description This project is focused on the sample using the API's new preview version of Android-L, use of transitions, shad

Sample projects for Android 13 (Developer Preview 1)
Sample projects for Android 13 (Developer Preview 1)

android-13-samples Sample projects for Android 13 (Developer Preview 1). Table of Content Themed App Icon (Github) (Tutorial) Quick Settings Placement

A SeekBar suited for showing a preview of something. As seen in Google Play Movies.
A SeekBar suited for showing a preview of something. As seen in Google Play Movies.

PreviewSeekBar A SeekBar suited for showing a video preview. As seen in Google Play Movies Google Play Movies PreviewSeekBar's sample Build Add the fo

A library to make a mosaic with a preview of multiple images
A library to make a mosaic with a preview of multiple images

Preview Image Collection Introduction Preview Image Collection is a library to draw a collage with a number of images like facebook preview album Inst

Simple and powerful library to emulate iOS's
Simple and powerful library to emulate iOS's "3D Touch" preview functionality on Android.

Android 3D Touch - PeekView iOS uses 3D Touch as a way to "peek" into full content, such as emails, pictures, web searches, etc. While they have dedic

Parsing and re-packing Android boot.img/vbmeta.img, supporting Android 12(preview)
Parsing and re-packing Android boot.img/vbmeta.img, supporting Android 12(preview)

Android_boot_image_editor A tool for reverse engineering Android ROM images. Getting Started install required packages Mac: brew install lz4 xz dtc Li

Android application to preview, record (MediaRecorder), and fetch each image from both front and rear cameras simultaneously
Android application to preview, record (MediaRecorder), and fetch each image from both front and rear cameras simultaneously

DuoCamera πŸš€ Overview Android application to preview, record (MediaRecorder) and fetch each image from both front and rear cameras simultaneously. The

Customisable Preview of system UI decoration for Jetpack Compose.
Customisable Preview of system UI decoration for Jetpack Compose.

AdvancedPreview Customisable Preview of system UI decoration for Jetpack Compose. Use cases Want the Preview in Android Studio to look more like in re

Demonstration of an issue trying to render a preview in Jetpack Compose without the activity artifact.
Demonstration of an issue trying to render a preview in Jetpack Compose without the activity artifact.

Demonstration of an issue trying to render a preview in Jetpack Compose without the activity artifact.

Turtle Graphics 🐒 implementation for Android Platform with Code Editor, Preview Screen and packages
Turtle Graphics 🐒 implementation for Android Platform with Code Editor, Preview Screen and packages

Turtle Graphics Download Turtle is an Android Application inspired from the original Turtle Graphics and Logo, Logo is an educational programming lang

ATH Sample is a sample Authentication and Authorization Application with Kotlin Language and MVVM architecture.
ATH Sample is a sample Authentication and Authorization Application with Kotlin Language and MVVM architecture.

ATH Sample ATH Sample is a sample Authentication and Authorization Application with Kotlin Language and MVVM architecture. Overview ATH Sample is a sa

WordMasterKMP - WIP Kotlin Multiplatform sample inspired by Wordle and also Word Master web sample
WordMasterKMP - WIP Kotlin Multiplatform sample inspired by Wordle and also Word Master web sample

WordMasterKMP WIP Kotlin Multiplatform sample inspired by Wordle and also Word M

ViewModel LiveData Sample - Sample of using ViewModel, LiveData and Data Binding

ViewModel_LiveData_Sample Sample Code for Lesson 8 using ViewModel, LiveData and

Owner
Basil Miller
Senior Android Developer Expert | Available βœ…
Basil Miller
An Android library that help you to build app with swipe back gesture.

SwipeBackLayout An Android library that help you to build app with swipe back gesture. Demo Apk GooglePlay Requirement The latest android-support-v4.j

ike_w0ng 6.1k Dec 29, 2022
[Archived] Highlight the best bits of your app to users quickly, simply, and cool...ly

ShowcaseView The ShowcaseView (SCV) library is designed to highlight and showcase specific parts of apps to the user with a distinctive and attractive

Alex Curran 5.6k Dec 16, 2022
An Android library that help you to build app with swipe back gesture.

SwipeBackLayout An Android library that help you to build app with swipe back gesture. Demo Apk GooglePlay Requirement The latest android-support-v4.j

ike_w0ng 6.1k Jan 3, 2023
Draftsman is an on device layout inspector which can be embedded in your android app.

Draftsman Draftsman is an on-device layout inspector for Android apps. It allows you to view various properties of rendered Android Views such as widt

Gojek 243 Dec 22, 2022
It makes a preview from an url, grabbing all the information such as title, relevant texts and images. This a version for Android of my web link preview https://github.com/LeonardoCardoso/Link-Preview

LeoCardz Link Preview for Android It makes a preview from an url, grabbing all the information such as title, relevant texts and images. Visual Exampl

Leonardo Cardoso 420 Nov 19, 2022
It makes a preview from an url, grabbing all the information such as title, relevant texts and images. This a version for Android of my web link preview https://github.com/LeonardoCardoso/Link-Preview

LeoCardz Link Preview for Android It makes a preview from an url, grabbing all the information such as title, relevant texts and images. Visual Exampl

Leonardo Cardoso 420 Nov 19, 2022
πŸ›’A Minimal Expense E-Commerce App built to demonstrate the use of modern android architecture components [Navigation, Room, MotionLayout, etc..] with MVVM Architecture. βœ”

E-Store A Simple E-Commerce App ?? built to demonstrate the use of modern android architecture component with MVVM Architecture ?? . Made with love ❀️

Ameen Essa 14 Nov 3, 2022
ComposeTextBug - Issue with MotionLayout+Compose in Text functionality

ComposeTextBug Issue with MotionLayout+Compose in Text functionality Demo: devic

Yahor 0 Jan 12, 2022
My compose experiments in one convenient location

Made with Compose I've started learning and experimenting with Compose during dev13 build. Since then, Compose first transitioned to alpha, then beta

Halil Ozercan 208 Jan 6, 2023