Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© 2024 Wantedly, Inc. Composeでの Shared Element Transition Mobile勉強会#13 2024/03/05 久保出雅俊
Slide 2
Slide 2 text
© 2024 Wantedly, Inc. wantedly.com/id/kubode X: @swiz_ard GitHub: @kubode
Slide 3
Slide 3 text
© 2024 Wantedly, Inc. 紹介 Wantedly Visit iOS, Android and Web 気軽に会社訪問 ミッションや価値観への共感でマッチング ● 給与や福利厚⽣などの条件ではなく、想いがあれば会社 の規模にとらわれない まず「話を聞きに⾏く」という新しい体験 ● 個⼈と企業がフラットな⽬線で出会えることで、より魅 ⼒的な場所を⾒つけることが可能に
Slide 4
Slide 4 text
© 2024 Wantedly, Inc. 紹介 Wantedly Visit
Slide 5
Slide 5 text
© 2024 Wantedly, Inc. 作成する画面 SearchScreen SuggestScreen SearchBar
Slide 6
Slide 6 text
© 2024 Wantedly, Inc. Shared Element Transition
Slide 7
Slide 7 text
© 2024 Wantedly, Inc. Shared Element Transitionとは ● 画面遷移をシームレスに見 せる手法 ● 画面間で共通する要素をア ニメーションさせる ● Activity/Fragmentには APIがある(が、難しい) https://developer.android.com/guide/fragments/animate
Slide 8
Slide 8 text
© 2024 Wantedly, Inc. ComposeでのShared Element Transition実装手法 ● 標準的APIはなし ● 試した手法 ○ LookaheadScope + movableContentOf ○ offsetアニメーション
Slide 9
Slide 9 text
© 2024 Wantedly, Inc. LookaheadScope + movableContentOf
Slide 10
Slide 10 text
© 2024 Wantedly, Inc. LookaheadScope + movableContentOf ● LookaheadScopeスコープ 内で、描画の前に次のフレー ムのレイアウトを先読み(look ahead)できる ● Shared Element Transitionに使えそうと言わ れていた
Slide 11
Slide 11 text
© 2024 Wantedly, Inc. LookaheadScope PoC
Slide 12
Slide 12 text
© 2024 Wantedly, Inc. LookaheadScope PoC それっぽく動くがShared Element以外がアニメーションし ない (Crossfadeさせたい
Slide 13
Slide 13 text
© 2024 Wantedly, Inc. LookaheadScope PoC
Slide 14
Slide 14 text
© 2024 Wantedly, Inc. LookaheadScope PoC SearchBarがアニメーション せず、画面全体が Crossfadeしてしまう 🤔
Slide 15
Slide 15 text
© 2024 Wantedly, Inc. LookaheadScope PoC なぜか? ● Crossfade中は2つの画面 が同時に存在する状態 ● 👉 movableContentOfが 2回呼ばれ効力がない状態
Slide 16
Slide 16 text
© 2024 Wantedly, Inc. LookaheadScopeは 要件に合わない😢
Slide 17
Slide 17 text
© 2024 Wantedly, Inc. offsetアニメーション
Slide 18
Slide 18 text
© 2024 Wantedly, Inc. offsetアニメーション ● Shared Elementを実際に 共有せず、各画面に配置 ○ 画面遷移開始時にShared Elementの オフセット差分を計算 ○ オフセット差分を0に近づけるように2画 面のShared Elementをアニメーション
Slide 19
Slide 19 text
© 2024 Wantedly, Inc. offsetアニメーション 遷移の状態管理 遷移中のアニメーション管理 Shared Elementのアニメーション
Slide 20
Slide 20 text
© 2024 Wantedly, Inc. offsetアニメーション 2画面の実際の Y座標保持と変更
Slide 21
Slide 21 text
© 2024 Wantedly, Inc. offsetアニメーション Y座標取得とoffset変更
Slide 22
Slide 22 text
© 2024 Wantedly, Inc. offsetアニメーション SearchからSuggestへ遷移時 SuggestはSearchから逆算 Search側のoffsetアニメーション
Slide 23
Slide 23 text
© 2024 Wantedly, Inc.
Slide 24
Slide 24 text
© 2024 Wantedly, Inc. まとめ
Slide 25
Slide 25 text
© 2024 Wantedly, Inc. まとめ ● Shared Element Transitionの実装を紹介 ○ LookaheadScope +movableContentOf ○ offsetアニメーション ● 要件次第ではLookaheadScopeで十分 ● こだわるなら自作 💪
Slide 26
Slide 26 text
© 2024 Wantedly, Inc.