All Projects → mobnetic → Compose Shared Element

mobnetic / Compose Shared Element

Experiment with SharedElement transition in Jetpack Compose, inspired by Flutter Hero widget.

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Compose Shared Element

Tltransitions
快速实现控制器的转场和View的快速popover显示,并支持自定义动画、手势退场
Stars: ✭ 296 (+190.2%)
Mutual labels:  transition, transition-animation
unity-ui-manager
🎫 A Simple UI Manager for rapid prototyping and ease of collaboration
Stars: ✭ 44 (-56.86%)
Mutual labels:  transition-animation, transition
vue2-animate
A port of Animate.css for use with transitions in Vue.js 2.0 / 3.0 and Alpine.js.
Stars: ✭ 1,338 (+1211.76%)
Mutual labels:  transition-animation, transition
Transitionbutton
UIButton sublass for loading and transition animation.
Stars: ✭ 1,124 (+1001.96%)
Mutual labels:  transition, transition-animation
Splitting
JavaScript microlibrary to split an element by words, characters, children and more, populated with CSS variables!
Stars: ✭ 1,222 (+1098.04%)
Mutual labels:  transition
Scroll Out
ScrollOut detects changes in scroll for reveal, parallax, and CSS Variable effects!
Stars: ✭ 1,033 (+912.75%)
Mutual labels:  transition
Akgpushanimator
Easily Push and Pop viewcontroller like Instagram App with Interaction
Stars: ✭ 44 (-56.86%)
Mutual labels:  transition
Photobrowser
Elegant photo browser in Swift. 图片与视频浏览器。
Stars: ✭ 975 (+855.88%)
Mutual labels:  transition-animation
Transformationlayout
🌠 Transform into a different view or activity using morphing animations.
Stars: ✭ 1,329 (+1202.94%)
Mutual labels:  transition
Cooreact
React组件库,一些常用的React组件
Stars: ✭ 85 (-16.67%)
Mutual labels:  transition
React Native Animatable
Standard set of easy to use animations and declarative transitions for React Native
Stars: ✭ 9,032 (+8754.9%)
Mutual labels:  transition
Swipeablecards
Demonstration of draggable transition for UIViewController with swipeable UICollectionView cells inside.
Stars: ✭ 52 (-49.02%)
Mutual labels:  transition
Barba
Create badass, fluid and smooth transition between your website's pages.
Stars: ✭ 9,372 (+9088.24%)
Mutual labels:  transition
Urmovingtransitionanimator
Moving view transition with the blurring effect between view controllers for Swift3
Stars: ✭ 44 (-56.86%)
Mutual labels:  transition-animation
Microstates
Composable state primitives for JavaScript
Stars: ✭ 1,312 (+1186.27%)
Mutual labels:  transition
Vueg Page Transition Plugin
为Vue应用添加页面间的转场特效( Page level transition plugin for vue-router)
Stars: ✭ 1,023 (+902.94%)
Mutual labels:  transition
Ibanimatable
Design and prototype customized UI, interaction, navigation, transition and animation for App Store ready Apps in Interface Builder with IBAnimatable.
Stars: ✭ 8,585 (+8316.67%)
Mutual labels:  transition-animation
Simpletab
A Simple iOS Tab Bar Controller with animation support.
Stars: ✭ 83 (-18.63%)
Mutual labels:  transition
Swift Layout Animation Transition 30days
Stars: ✭ 68 (-33.33%)
Mutual labels:  transition
Uberux
Project that demonstrates the entire animation stack present in the Uber app (android)
Stars: ✭ 1,201 (+1077.45%)
Mutual labels:  transition-animation

compose-shared-element

Proof of concept exploration of how to implement SharedElement transition in Jetpack Compose.
Inspired by Flutter Hero widget.

Transition consists of following animations:

  • Position
  • Scale
  • Crossfade (which makes it work on any kind of element, e.g. Text)

UsersListScreen:
UsersListScreen

UserDetailScreen:
UserDetailScreen
Slowed down transition animation:
TransitionAnimation

Usage

  1. Define FROM and TO elements with shared tag
@Composable
fun ScreenA() {
  // ...
  
    SharedElement(tag = "tag", type = SharedElementType.FROM) {
        Image(image, Modifier.preferredSize(48.dp))
    }
  
  // ...
}

@Composable
fun ScreenB() {
  // ...
  
    SharedElement(tag = "tag", type = SharedElementType.TO) {
        Image(image, Modifier.preferredSize(200.dp))
    }
    
  // ...
}
  1. Make SharedElementsRoot a common parent of ScreenA and ScreenB. It doesn't have to be their direct parent.
SharedElementsRoot {
    // change between ScreenA and ScreenB
}
  1. Transition starts automatically when second SharedElement is detected

Sample

See sample usage with UsersListScreen and UserDetailsScreen here.

Issues

Considering the experimental state of this library and state of Jetpack Compose itself there are some issues described here.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].