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
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
830
AndroidアプリのAI実装をAndroidifyで学ぶ ー Google公式サンプルによる体験と実装 ー
takahirom
0
150
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
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.7k
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
240
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
400
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
150
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
240
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
1
520
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
210
React本体のコードリーディング
high_g_engineer
1
160
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
330
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
210
リアルな遅延を測る仕様
kota_yata
1
130
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
230
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
390
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
220
Faster Mobile Websites
deanohume
310
32k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
440
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
580
Marketing to machines
jonoalderson
1
5.7k
GraphQLとの向き合い方2022年版
quramy
50
15k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
220
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