Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Android Transition
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
takahirom
February 15, 2017
Programming
4.6k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android Transition
takahirom
February 15, 2017
More Decks by takahirom
See All by takahirom
AIエージェントで 変わるAndroid開発環境
takahirom
3
880
AndroidアプリのAI実装をAndroidifyで学ぶ ー Google公式サンプルによる体験と実装 ー
takahirom
0
160
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
1.1k
Google の LLM ライブラリ を Android アプリで 使うには?
takahirom
1
2.2k
Robolectric Native Graphics and Roborazzi
takahirom
1
2.4k
Androidアプリで安定して動作させ継続的に開発するために設計の原則を利用して開発した話
takahirom
3
1.5k
Android Tools & Performance
takahirom
1
1.3k
Jetpack Compose State Practices
takahirom
1
1.5k
Inside Jetpack Compose
takahirom
1
1.1k
Other Decks in Programming
See All in Programming
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
440
スマート反転とウェブアクセシビリティ
camiha
0
150
Deep dive into the select statement (GopherCon UK)
jespino
0
170
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
2
760
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
100
自分的「カンファレンスの楽しみ方」
syumai
0
200
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
120
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
120
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
180
Intent as Code
shoppingjaws
2
370
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
640
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
460
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Scaling GitHub
holman
464
140k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Leo the Paperboy
mayatellez
8
2.2k
From π to Pie charts
rasagy
0
360
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
650
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
430
Transcript
"OESPJE5SBOTJUJPO UBLBIJSPN !OFX@SVOOBCMF
荈䊹稱➜ ˖ UBLBIJSPNהְֲせד2JJUBהַ剅ְגְתׅկ ˖ %SPJE,BJHJחג ˑ)PXUPJNQMFNFOU.BUFSJBM%FTJHO"OJNBUJPO˒ד 涪邌׃תׅ 勻גי
5SBOTJUJPOהכ ˖ BOESPJEUSBOTJUJPO5SBOTJUJPOؙٓأ ˖ 醱侧ך4DFOFהְֲٖ؎،ؐز⽃⡘ח㼎׃גծ ،صً٦ءّٝ⡲גֻ
5SBOTJUJPOהכ ˖ ًٔحز ˖ ֿ갹䓸הְזوذٔ،ٕرؠ ؎ٝך،صً٦ءָّٝ㹋鄲דֹ ̔(PPHMFךوذٔ،ٕرؠ؎ٝך罋 㹋鄲ך1MBJEדֻׁⵃ欽ׁגְ ˖ "1*-FWFM
"OESPJE ˖ 4VQQPSU-JCSBSZד⢪ִ״ֲחזך ד"1*-FWFM תד⢪ִ 植朐駈זְ堣腉ָⶴה㢳ְ (PPHMFͷ044 1MBJEΞϓϦΑΓ
5SBOTJUJPOך珏겲 ˖ ⽃♧ך5SBOTJUJPO ˖ 'BEF鷲僇䏝ך،صً٦ءָّٝדֹ ˖ $IBOHF#PVOET7JFXך⹛ֹה7JFXך㣐ֹׁךٔ؟؎ؤ ˖ זוזו ˖
5SBOTJUJPO4FUְֻ̔אַろ ˖ "VUP5SBOTJUJPO⡦5SBOTJUJPO䭷㹀׃זְ儗ךرؿٕؓزך 5SBOTJUJPOկ$IBOHF#PVOETה'BEFָろתגְ ˖ $VTUPN5SBOTJUJPO荈ⴓד㹀纏׃5SBOTJUJPO
5SBOTJUJPOך⡲䧭倯岀 ɾίʔυ͔Βੜ final Transition transition = new ChangeBounds() .setDuration(350) .setInterpolator(new
FastOutSlowInInterpolator()); ˖ YNMַ欰䧭 Transition transition = TransitionInflater .from(context) .inflateTransition(R.transition.change_bounds); // res/transition/change_bounds.xml <?xml version="1.0" encoding="utf-8"?> <changeBounds xmlns:android="http://schemas.android.com/apk/res/ android" android:duration="350" android:interpolator=“@android:interpolator/fast_out_slow_in" />
5SBOTJUJPOؕأةو؎ؤ ˖ 5SBOTJUJPOBEE5BSHFU 7JFXװJEזו ،صً٦ءّׅٝ7JFXせזודⵖꣲׅ ˖ 5SBOTJUJPOTFU1BUI.PUJPOזו⢪ִל嘴ⰼ䕎ך،صً٦ءّٝ 〳腉 "1*-FWFM
˖ ،صً٦ءّٝ禸ך%VSBUJPOװ*OUFSQPMBUPSזו♧鸐⢪ִ final Transition transition = new ChangeBounds() .setDuration(350) .setInterpolator(new FastOutSlowInInterpolator()); transition.setPathMotion(new ArcMotion());
5SBOTJUJPOⵃ欽ׅ倯岀 ˖ ָֿ㛇劤ծ4DFOFⴖ剏ִ ˖ 5SBOTJUJPO.BOBHFSCFHJO%FMBZFE5SBOTJUJPO ٖ؎،ؐزך㢌刿ד荈⹛ד،صً٦ءّٝאֽ ˖ 8JOEPX5SBOTJUJPO 4IBSFE&MFNFOU5SBOTJUJPOֿ➙כָֿ㢳ְ
˖ 4DFOF⢪ֲ
4DFOF⢪ֲ ٖ؎،ؐزה秡➰ֽTDFOFⴖ剏ִך TDFOF" TDFOF# MBZPVU@BYNM MBZPVU@CYNM 5SBOTJUJPO.BOBHFS HP TDFOF#
4DFOF⢪ֲ // Transition࡞ final Transition transition = TransitionInflater .from(context) .inflateTransition(R.transition.transition_arc);
// TransitionΛར༻ͯ͠scene2ʹભҠ TransitionManager.go(arcScene1, transition); 鼂獳儗ח5SBOTJUJPO䭷㹀דֹ
5SBOTJUJPOⵃ欽ׅ倯岀 ˖ ָֿ㛇劤 ˖ ٖ؎،ؐزך㢌刿ד荈⹛ד،صً٦ءّٝאֽ ˖ 8JOEPX5SBOTJUJPO 4IBSFE&MFNFOU5SBOTJUJPOֿ➙כָֿ㢳ְ
w 4DFOFΛ͏ ˖ 5SBOTJUJPO.BOBHFSCFHJO%FMBZFE5SBOTJUJPO
5SBOTJUJPO.BOBHFSCFHJO%FMBZF E5SBOTJUJPO ˖ 5SBOTJUJPO䭷㹀ׇ׆חⵃ欽ׅ㜥さծ㛇劤涸ח⟃♴ֽד، صً٦ءّٝ⳿勻 痥✳䒷侧ד䭷㹀〳腉 TransitionManager.beginDelayedTransition(mSceneRoot); // mSceneRootͷViewΛLayoutParamsΛ͍ͬͯ͡Ҡಈ͞
ͤΔ // params.addRule(…) mFirstButton.setLayoutParams(params);
5SBOTJUJPO.BOBHFSCFHJO %FMBZFE5SBOTJUJPO ˖ ➬穈 ˖ CFHJO%FMBZFE5SBOTJUJPOًاحسָㄎל儗剑ⴱך4DFOFה׃ծ ˖ ٖ؎،ؐزך㢌刿ד7JFXSFRVFTU-BZPVU ָㄎל ˖
如ח0O1SF%SBX-JTUFOFSPO1SF%SBX ָㄎל儗如ך4DFOFהׅ䠬ׄד㹋鄲ׁ גְ 㹋ꥷחכ4DFOFכ⢪זְ 5SBOTJUJPO.BOBHFSCFHJO %FMBZFE5SBOTJUJPO TDFOF 0O1SF%SBX-JTUFOFS PO1SF%SBX WJFXTFU-BZPVU1BSBNT TDFOF "VUP5SBOTJUJPO
5SBOTJUJPO.BOBHFSCFHJO %FMBZFE5SBOTJUJPO ˖ BOESPJEVJUPPMLJUEFNPT IUUQTHJUIVCDPNHPPHMFBOESPJEVJUPPMLJUEFNPT ˖ ֿך؟ٝفٕ،فָٔ4VQQPSU-JCSBSZח״ג؟ٝفٕ 㹋鄲ׁגְגֶׅׅדׅկ
5SBOTJUJPOⵃ欽ׅ倯岀 ˖ ָֿ㛇劤 ˖ ٖ؎،ؐزך㢌刿ד荈⹛ד،صً٦ءّٝאֽ ˖ 4IBSFE&MFNFOU5SBOTJUJPOֿ➙כָֿ㢳ְ
˖ 4DFOF⢪ֲ w 5SBOTJUJPO.BOBHFSCFHJO%FMBZFE5SBOTJUJPO w 8JOEPX5SBOTJUJPO
8JOEPX5SBOTJUJPO "1*-FWFM "OESPJE։ 㛇劤כ珏겲 ˖ ך8JOEPX5SBOTJUJPO "DUJWJUZך剑ⴱך朐䡾ַծ邌爙ׁ䖓ך朐䡾תד،صً٦ ءّٝ圫㶨 ➙㔐כⶴ䠥
˖ ך"DUJWJUZַⰟ鸐ךך5SBOTJUJPOדֹ w 4IBSFE&MFNFOU5SBOTJUJPO
4IBSFE&MFNFOU5SBOTJUJPO ɾࢦఆํ๏ ςʔϚʹΑΔࢦఆ <item name=“android:windowSharedElementEnterTransition">@transition/ shared_element</item> ίʔυʹΑΔࢦఆ activity.getWindow().setSharedElementEnterTransition(sharedEnter);
4IBSFE&MFNFOU5SBOTJUJPO ࣮ํ๏ৄࡉ
None
None
4IBSFE&MFNFOU5SBOTJUJPO ࣮ํ๏ৄࡉ
4IBSFE&MFNFOU5SBOTJUJPO ך➬穈 EFDPS7JFXOE/BNFE7JFXT TIBSFE&MFNFOUT דUSBOTJUJPO/BNFָאְ7JFXⰋג《⳿ׅ &OUFS5SBOTJUJPO$PPSEJOBUPS 植㖈ךٖ؎،ؐزך7JFXך⡘縧⥂㶷
"DUJWJUZ5SBOTJUJPO$PPSEJOBUPS "DUJWJUZ鼂獳ד床גֹ#VOEMFח״ծ⯋ךٖ؎،ؐزך⡘縧ד7JFXMBZPVU ㄎן⳿ׅ "DUJWJUZ5SBOTJUJPO$PPSEJOBUPS 5SBOTJUJPO.BOBHFSCFHJO%FMBZFE5SBOTJUJPO 5SBOTJUJPO䭷㹀׃גㄎן⳿ׅ &OUFS5SBOTJUJPO$PPSEJOBUPS ⯋ך⥂㶷׃גְֶ7JFXך⡘縧ד7JFXMBZPVU ㄎן⳿ׅ "DUJWJUZ5SBOTJUJPO$PPSEJOBUPS 5SBOTJUJPO.BOBHFSCFH JO%FMBZFE5SBOTJUJPO TDFOF ભҠݩͷ7JFXͷҐஔ 0O1SF%SBX-JTUFOFS PO1SF%SBX WJFXMBZPVU MFGU UPQ SJHIU CPUUPN TDFOF ભҠઌͷ7JFXͷҐஔ ࢦఆͨ͠5SBOTJUJPO WJFXMBZPVU MFGU UPQ SJHIU CPUUPN [ݺΕͨଆͷActivityͷ෦ͷॲཧ(API Level 25ͷίʔυΑΓ)] ؒҧ͍ͬͯͨΒίϝϯτ͍ͩ͘͞
ֿֿתדד⳿勻ֿה .BUFSJBM%FTJHOך$IPSFPHSBQIZ 䮶➰ֽ ָ 㹋鄲׃װֻׅז ꟼ⤘䚍僇澗חׅ
ֿֿתדד⳿勻ֿה <?xml version="1.0" encoding="utf-8"?> <transitionSet xmlns:android="http://schemas.android.com/apk/res/and xmlns:app="http://schemas.android.com/apk/res-auto" android:duration="375" android:interpolator="@android:interpolator/fast_out_slow_in"> <changeBounds
/> <fade android:duration="150" android:startDelay="75"> <targets> <target android:targetName="all_content_element_nonshare_te </targets> </fade> </transitionSet> 5SBOTJUJPOʹམͱ͠ࠐΊΔ
$VTUPN5SBOTJUJPO 044ך(PPHMF1MBJE،فٔ״ ˖ 歗鼂獳儗ך5SBOTJUJPO ˖ 'MPBUJOH"DUJPO#VUUPOך5SBOTJUJPO ˖ 嗚稊璞ך5SBOTJUJPO ̔%SPJE,BJHJדֶ鑧׃תׅ ע
罋项俱 ˖ "OJNBUJOH7JFXT6TJOH4DFOFTBOE5SBOTJUJPOTIUUQTEFWFMPQFSBOESPJEDPNUSBJOJOH USBOTJUJPOTJOEFYIUNM ˖ %FW#ZUFIUUQTXXXZPVUVCFDPNXBUDI GFBUVSFQMBZFS@FNCFEEFEW4)O+2B% ˖ ⹛ַׅ %FW'FTU,BOTBJ
IUUQZBSBLJHJUIVCJPTMJEFTEFWGFTULBOTBJ JOEFYIUNM ˖ 5SBOTJUJPOTJOUIF"OESPJE4VQQPSU-JCSBSZIUUQTNFEJVNDPNHPPHMFEFWFMPQFST USBOTJUJPOTJOUIFBOESPJETVQQPSUMJCSBSZCDBEFGFTVIE ˖ BOESPJEVJUPPMLJUEFNPTIUUQTHJUIVCDPNHPPHMFBOESPJEVJUPPMLJUEFNPT ˖ 4VQQPSU-JCSBSZGPS5SBOTJUJPOT0WFSWJFXBOEDPNQBSJTPOXJUI5SBOTJUJPOT&WFSZXIFSF IUUQTNFEJVNDPN!BOELVMJLPWTVQQPSUMJCSBSZGPSUSBOTJUJPOTPWFSWJFXBOE DPNQBSJTPODCFDGDCVED[ONVZ