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.5k
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
AndroidアプリのAI実装をAndroidifyで学ぶ ー Google公式サンプルによる体験と実装 ー
takahirom
0
140
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
1k
Google の LLM ライブラリ を Android アプリで 使うには?
takahirom
1
2.1k
Robolectric Native Graphics and Roborazzi
takahirom
1
2.3k
Androidアプリで安定して動作させ継続的に開発するために設計の原則を利用して開発した話
takahirom
3
1.4k
Android Tools & Performance
takahirom
1
1.2k
Jetpack Compose State Practices
takahirom
1
1.5k
Inside Jetpack Compose
takahirom
1
1.1k
What’s new in Android Jetpack and Tools
takahirom
0
430
Other Decks in Programming
See All in Programming
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
120
Agentic UI
manfredsteyer
PRO
0
160
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
170
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
280
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.6k
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
11
4.1k
net-httpのHTTP/2対応について
naruse
0
490
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
340
Vite+ Unified Toolchain for the Web
naokihaba
0
310
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.4k
Featured
See All Featured
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
A Modern Web Designer's Workflow
chriscoyier
698
190k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
350
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
210
Designing Experiences People Love
moore
143
24k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
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