Slide 1

Slide 1 text

)PXUPJNQMFNFOU NBUFSJBMEFTJHOBOJNBUJPO UBLBIJSPN

Slide 2

Slide 2 text

˖ :BIPP+"1"/ך"OESPJEؒٝآص، ˖ 劤せכ嬁「䃨峔 ׭׿ׄױ׋ַמ׹ ˖ "OESPJEָ㥨ֹ ˖ UBLBIJSPN !OFX@SVOOBCMF ˖ 2JJUBהַ׮剅ְגְ׷ךד״׹׃ֻ ֶ격ְ׃תׅ 荈䊹稱➜

Slide 3

Slide 3 text

– Motion Lead @Google. John Schlemmer “one of the main components of what makes material, material. ”

Slide 4

Slide 4 text

˖ ٌ٦ءّٝךꅾ銲䚍 ˖ ٌ٦ءّٝך⾱⵱ ˖ ؖ؎سٓ؎ٝה㹋鄲 ˖ "OESPJE劢弫ך畭劣דוֲ㹋鄲ׅ׷ַ ˖ תה׭ 湡如

Slide 5

Slide 5 text

ז׈،صً٦ءׇׁّٝ׷ ַ

Slide 6

Slide 6 text

˖ ؽُ٦꟦ך搊挿ךؖ؎س ˖ ِ٦ؠ٦ָ乼⡲׾㸣✪ׅ׷ה⡦ָ饯ֹ׷ךַؼٝز׾爙ׅ ˖ 銲稆꟦ךꥡ㾴涸ծ瑞꟦涸זꟼ⤘ ˖ 胜䖓ד遤׻׸גְ׷Ⳣ椚؝ٝذٝخך《䖤ծ
 如ךؽُ٦ך铣׫鴥׫זוַ׵岣湡׾׉׵ׅ ˖ ٍؙؗٓة٦ծ峤箺ծ嚂׃׫ ٌ٦ءّٝךꅾ銲䚍 .BUFSJBM%FTJHO(VJEFMJOF״׶

Slide 7

Slide 7 text

˖ ؽُ٦꟦ך搊挿ךؖ؎س ˖ ِ٦ؠ٦ָ乼⡲׾㸣✪ׅ׷ה⡦ָ饯ֹ׷ךַؼٝز׾爙ׅ ˖ 銲稆꟦ךꥡ㾴涸ծ瑞꟦涸זꟼ⤘ ˖ 胜䖓ד遤׻׸גְ׷Ⳣ椚؝ٝذٝخך《䖤ծ
 如ךؽُ٦ך铣׫鴥׫זוַ׵岣湡׾׉׵ׅ ˖ ٍؙؗٓة٦ծ峤箺ծ嚂׃׫ ٌ٦ءّٝךꅾ銲䚍 罋ִ׷ֿה׾幾׵ׅ ⴓַ׶װֻׅ .BUFSJBM%FTJHO(VJEFMJOF״׶

Slide 8

Slide 8 text

וֲװ׏ג وذٔ،ٕرؠ؎ٝד ،صً٦ءׇׁّٝ׷ַ

Slide 9

Slide 9 text

˖ 3FTQPOTJWF
 ̔⽯䏟ח⿾䘔׃ג鸞䏝ָ鸞ְ ٌ٦ءّٝך⾱⵱ .BUFSJBM%FTJHO(VJEFMJOF״׶ %SPJE,BJHJPDJBM"OESPJEBQQ״׶

Slide 10

Slide 10 text

˖ 3FTQPOTJWF
 ̔⽯䏟ח⿾䘔׃ג鸞䏝ָ鸞ְ ˖ /BUVSBM
 ̔荈搫ז⹛ֹ ٌ٦ءّٝך⾱⵱ .BUFSJBM%FTJHO(VJEFMJOF״׶

Slide 11

Slide 11 text

˖ 3FTQPOTJWF
 ̔⽯䏟ח⿾䘔׃ג鸞䏝ָ鸞ְ ˖ /BUVSBM
 ̔荈搫ז⹛ֹ ˖ "XBSF
 ̔➭ךوذٔ،ٕה䓼锃⹛⡲ ٌ٦ءّٝך⾱⵱ .BUFSJBM%FTJHO(VJEFMJOF״׶

Slide 12

Slide 12 text

˖ 3FTQPOTJWF
 ̔⽯䏟ח⿾䘔׃ג鸞䏝ָ鸞ְ ˖ /BUVSBM
 ̔荈搫ז⹛ֹ ˖ "XBSF
 ̔➭ךوذٔ،ٕה䓼锃⹛⡲ ˖ *OUFOUJPOBM
 ̔䠐㔳ָ֮׷ ٌ٦ءّٝך⾱⵱ .BUFSJBM%FTJHO(VJEFMJOF״׶ %SPJE,BJHJPDJBM"OESPJEBQQ״׶

Slide 13

Slide 13 text

וֲ㹋鄲ׅ׷ַ

Slide 14

Slide 14 text

NBUFSJBMFMFNFOU IUUQHJUJPFMFNFOU ؟ٝفٕ،فٔ⡲׶ת׃׋

Slide 15

Slide 15 text

HJUJPFMFNFOU

Slide 16

Slide 16 text

وذٔ،ٕرؠ؎ٝ
 ؖ؎سٓ؎ٝ׾
 ⯋ח⡲䧭 HJUJPFMFNFOU

Slide 17

Slide 17 text

א׆אؖ؎سٓ؎ַٝ׵ 鷄׏ג׫״ֲ

Slide 18

Slide 18 text

˖ وذٔ،ٕرؠ؎ٝ ˖ ٌ٦ءّٝ ˖ أة؎ٕ ˖ ٖ؎،ؐز ˖ ؝ٝه٦طٝز ˖ ػة٦ٝ ˖ 㷕统ה䞔㜠䲿⣘ ˖ ِ٦ؠؽٔذ؍ ˖ ٔا٦أ وذٔ،ٕرؠ؎ٝؖ؎سٓ؎ٝ אך畍ַ׵圓䧭ׁ׸׷

Slide 19

Slide 19 text

ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 20

Slide 20 text

˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳 ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ

Slide 21

Slide 21 text

넝䏝הءٍسؐ 䕦ח岣湡
 ةحف儗ח嵤ֹ♳ָ׏ג鋅ִ׷ %SPJE,BJHJPDJBM"OESPJEBQQ״

Slide 22

Slide 22 text

넝䏝הءٍسؐ ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز ؖ؎سٓ؎ٝ ةحف儗ח7JFX׾EQ♳ָ׷
 EQ⹛涸넝䏝ؔؿإحز 䬃׃גזְ儗ך 넝䏝 䬃׃גְ׷הֹך 넝䏝 'MPBUJOH"DUJPO#VUUPO EQ EQ #VUUPO EQ EQ $BSE EQ EQ

Slide 23

Slide 23 text

ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 TUBUF-JTU"OJNBUPSכ"1*-FWFM劢弫ד搀鋔ׁ׸׷ "1*-FWFM "OESPJE TUBUF-JTU"OJNBUPS׾⢪ֲ ٖ؎،ؐز9.-ⰻ

Slide 24

Slide 24 text

ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 BOJNBUPS@SBJTFYNM

Slide 25

Slide 25 text

ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 䬃׃גְ׷הֹך،صً٦ءّٝ׾ 䭷㹀ׅ׷ BOJNBUPS@SBJTFYNM

Slide 26

Slide 26 text

ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 USBOTJUJPO;׾EQחׅ׷ BOJNBUPS@SBJTFYNM

Slide 27

Slide 27 text

ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 BOJNBUPS@SBJTFYNM EQ ׮ה׮הך&MFWBUJPO EQ ⹛涸넝䏝ؔؿإحز EQ חז׷

Slide 28

Slide 28 text

ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 29

Slide 29 text

竰竲儗꟦ 騃ꨄָꞿְקו،صً٦ءّٝ儗꟦ָꞿְ

Slide 30

Slide 30 text

竰竲儗꟦

Slide 31

Slide 31 text

˖ NT׾馄ִזְ״ֲחׅ׷ 竰竲儗꟦

Slide 32

Slide 32 text

˖ NT׾馄ִזְ״ֲחׅ׷ ˖ NTַ׵NTך꟦ד
 ⹛ַׅ騃ꨄח״׏ג锃侭 竰竲儗꟦

Slide 33

Slide 33 text

˖ NT׾馄ִזְ״ֲחׅ׷ ˖ NTַ׵NTך꟦ד
 ⹛ַׅ騃ꨄח״׏ג锃侭 ˖ ةـٖحزזוך畭劣ח
 ״׏ג׮㢌ִ׋קֲָ葺ְ
 㣐ְֹ畭劣קוꞿֻ 竰竲儗꟦

Slide 34

Slide 34 text

˖ NT׾馄ִזְ״ֲחׅ׷ ˖ NTַ׵NTך꟦ד
 ⹛ַׅ騃ꨄח״׏ג锃侭 ˖ ةـٖحزזוך畭劣ח
 ״׏ג׮㢌ִ׋קֲָ葺ְ
 㣐ְֹ畭劣קוꞿֻ ˖ TFU%VSBUJPO ׾ⵃ欽ׅ׷ 竰竲儗꟦

Slide 35

Slide 35 text

ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 36

Slide 36 text

؎٦آؚٝ &BTJOH$VSWFTכ،صً٦ءّٝך
 أؾ٦سװ鷲僇䏝ծ㣐ֹׁזוח黝䘔ׁ׸׷

Slide 37

Slide 37 text

ٌ٦ءّٝ؎٦آؚٝ ؖ؎سٓ؎ٝ Ͳ͜Ͱ࢖͏͔ ඪ४Χʔϒ4UBOEBSEDVSWF ը໘಺Ͱͷӡಈ ݮ଎Χʔϒ%FDFMFSBUJPODVSWF ը໘ʹೖΔӡಈ Ճ଎Χʔϒ"DDFMFSBUJPODVSWF ը໘͔Βग़Δӡಈ ٸΧʔϒ4IBSQDVSWF ͍ͭͰ΋ը໘ʹೖΕΔΦϒδΣΫτ ͷӡಈ

Slide 38

Slide 38 text

ٌ٦ءّٝ؎٦آؚٝ 㹋鄲 Ͳ͏࣮૷͢Δ͔ ඪ४Χʔϒ4UBOEBSEDVSWF 'BTU0VU4MPX*O*OUFSQPMBUPS ݮ଎Χʔϒ%FDFMFSBUJPODVSWF -JOFBS0VU4MPX*O*OUFSQPMBUPS Ճ଎Χʔϒ"DDFMFSBUJPODVSWF 'BTU0VU-JOFBS*O*OUFSQPMBUPS ٸΧʔϒ4IBSQDVSWF 1BUI*OUFSQPMBUPS$PNQBU DSFBUF G G ViewPropertyAnimatorΛ࢖ͬͨࢦఆํ๏ view.animate() .translationX(100) .setDuration(290) .setInterpolator(new FastOutSlowInInterpolator()) .start(); "1*-FWFM

Slide 39

Slide 39 text

وذٔ،ٕرؠ؎ٝؖ؎سٓ؎ٝ ➙㔐《׶♳־׷،صً٦ءّٝ鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 40

Slide 40 text

麊⹛ 植㹋ך⚅歲הずׄ״ֲח♴倯ぢחꅾ⸂ָ֮׷ךד
 ♴ך倯ぢח花׵׿׌䕎חז׷

Slide 41

Slide 41 text

麊⹛ 㹋鄲

Slide 42

Slide 42 text

麊⹛ 㹋鄲

Slide 43

Slide 43 text

麊⹛ 㹋鄲 ext, TransformingActivity.class); nsCompat.makeSceneTransitionAnimation( iew,getString(R.string.transition_name)).toBundle(); ontext, intent, options); .BJO"DUJWJUZ 5SBOTGPSNJOH"DUJWJUZ

Slide 44

Slide 44 text

"DUJWJUZ0QUJPOT$PNQBUד 鼂獳⯋7JFXה鼂獳⯓ך7JFX׾
 穠ןאֽג"DUJWJUZ饯⹛ Intent intent = new Intent(context, TransformingActivity.class); Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation( context, fromView, getString(R.string.transition_name)).toBundle(); ActivityCompat.startActivity(context, intent, options); .BJO"DUJWJUZ

Slide 45

Slide 45 text

5SBOTGPSNJOH"DUJWJUZ <item name="android:windowSharedElementEnterTransition">@transition/ default_share</item> <item name="android:windowSharedElementReturnTransition">@transition/ ٖ؎،ؐز ذ٦و ٖ؎،ؐزדUSBOTJUJPO/BNF׾䭷㹀

Slide 46

Slide 46 text

<item name="android:windowSharedElementEnterTransition">@transition/ default_share</item> <item name="android:windowSharedElementReturnTransition">@transition/ default_share</item> ٖ؎،ؐز ذ٦و 5SBOTJUJPO ذ٦وד5SBOTJUJPO׾䭷㹀

Slide 47

Slide 47 text

android:layout_height="wrap_content" android:transitionName="@string/transition_name"/> <item name="android:windowSharedElementEnterTransition">@transition/ default_share</item> <item name="android:windowSharedElementReturnTransition">@transition/ default_share</item> ذ٦و 5SBOTJUJPO QBUI.PUJPO׾䭷㹀 ֿ׸ח״׶嘴ⰼ䕎חז׷ DIBOHF#PVOETד獳⹛㣐ֹׁ㢌⻉

Slide 48

Slide 48 text

麊⹛ 㹋鄲 QBUI.PUJPO׾ⵃ欽ׅ׷կ
 ׋׌׃垥彊ך"SD.PSUJPOؙٓأ׾ⵃ欽 ׅ׷ה♳ח花׵׬،صً٦ءّٝד ♶黝ⴖהׁ׸גְ׷⹛ֹהז׷ IUUQTEFWFMPQFSBOESPJEDPNSFGFSFODFBOESPJEUSBOTJUJPO"SD.PUJPOIUNM "1*-FWFM 5SBOTJUJPOך䭷㹀⢽ ❌

Slide 49

Slide 49 text

荈搫ז䓜׾⡲׷חכ

Slide 50

Slide 50 text

˖ 1MBJEח֮׷"SD.PUJPOؙٓأ׾
 䭁䓸׃׋(SBWJUZ"SD.PUJPOؙٓأָ
 ֮׷
 QMBJE(SBWJUZ"SD.PUJPOKBWB 荈搫ז䓜׾⡲׷חכ

Slide 51

Slide 51 text

˖ 1MBJEח֮׷"SD.PUJPOؙٓأ׾
 䭁䓸׃׋(SBWJUZ"SD.PUJPOؙٓأָ
 ֮׷
 QMBJE(SBWJUZ"SD.PUJPOKBWB 荈搫ז䓜׾⡲׷חכ ˟1MBJEהכ(PPHMFךوذٔ،ٕرؠ؎ٝך ؔ٦فٝا٦أך⿫罋㹋鄲דַאرؠ؎ٝصُ٦أ،فٔ

Slide 52

Slide 52 text

˖ 1MBJEח֮׷"SD.PUJPOؙٓأ׾
 䭁䓸׃׋(SBWJUZ"SD.PUJPOؙٓأָ
 ֮׷
 QMBJE(SBWJUZ"SD.PUJPOKBWB ˖ ׋׌ծك٦أה׃גְ׷
 ؿٖ٦يٙ٦ؙך؝٦سָ〢ֻծ
 暴㹀ך勴⟝ך儗ח
 ֲתֻ،صً٦ءّٝ׃זְ׋׭ծ ⡲׶湫׃׋
 NBUFSJBMFMFNFOU (SBWJUZ"SD.PUJPOKBWB 荈搫ז䓜׾⡲׷חכ ˟1MBJEהכ(PPHMFךوذٔ،ٕرؠ؎ٝך ؔ٦فٝا٦أך⿫罋㹋鄲דַאرؠ؎ٝصُ٦أ،فٔ

Slide 53

Slide 53 text

ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 54

Slide 54 text

ةحف׃׋㜥䨽ַ׵
 ⰼ׾䲽ֻ״ֲח邌爙ׁ׸׷ وذٔ،ٕך㢌䕎 佝㼗㘗㢌䕎

Slide 55

Slide 55 text

4IBSFE&MFNFOU5SBOTJUJPOד
 $VTUPN5SBOTJUJPO׾ⵃ欽׃ג֮־׷ وذٔ،ٕך㢌䕎 佝㼗㘗㢌䕎㹋鄲

Slide 56

Slide 56 text

5SBOTGPSNJOH.BUFSJBM"DUJWJUZ -PHJO"DUJWJUZ ̔

Slide 57

Slide 57 text

̔ 'BC5SBOTGPSN public class F @Override public void captureV } @Override public void final FabTrans activity.getWi -PHJO"DUJWJUZ Intent intent = new Intent(context, LoginActivity.class); … ActivityOptionsCompat optionsCompat = ActivityOptionsCompat .makeSceneTransitionAnimation(context, fab, getString(R.string.transition_name_login)); ActivityCompat.startActivity(context, intent, optionsCompat.toBundle()); "DUJWJUZ0QUJPOT$PNQBUד 鼂獳⯋7JFXה鼂獳⯓ך7JFX׾
 穠ןאֽג"DUJWJUZ饯⹛ 5SBOTGPSNJOH.BUFSJBM"DUJWJUZ -PHJO"DUJWJU

Slide 58

Slide 58 text

…. 'BC5SBOTGPSNKBWB public class FabTransform extends Transition { @Override public void captureStartValues(TransitionValues transitionValues) { captureValues(transitionValues); } @Override public void captureEndValues(TransitionValues transitionValues) { final FabTransform sharedEnter = new FabTransform(color, icon); activity.getWindow().setSharedElementEnterTransition(sharedEnter); -PHJO"DUJWJUZKBWB ٖ؎،ؐزדUSBOTJUJPO/BNF׾䭷㹀 -PHJO"DUJWJUZ

Slide 59

Slide 59 text

…. 'BC5SBOTGPSNKBWB public class FabTransform extends Transition { @Override public void captureStartValues(TransitionValues transitionValues) { captureValues(transitionValues); } @Override public void captureEndValues(TransitionValues transitionValues) { final FabTransform sharedEnter = new FabTransform(color, icon); activity.getWindow().setSharedElementEnterTransition(sharedEnter); -PHJO"DUJWJUZKBWB 'BC5SBOTGPSNהְֲ $VTUPN5SBOTJUJPO׾䭷㹀 -PHJO"DUJWJUZ

Slide 60

Slide 60 text

'BC5SBOTGPSNKBWB public class FabTransform extends Transition { @Override public void captureStartValues(TransitionValues transitionValues) { captureValues(transitionValues); } @Override public void captureEndValues(TransitionValues transitionValues) { captureValues(transitionValues); } private void captureValues(TransitionValues transitionValues) { final View view = transitionValues.view; transitionValues.values.put(PROP_BOUNDS, new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())); } @Override public Animator createAnimator(final ViewGroup sceneRoot, final TransitionValues startValues, final TransitionValues endValues) {

Slide 61

Slide 61 text

'BC5SBOTGPSNKBWB public class FabTransform extends Transition { @Override public void captureStartValues(TransitionValues transitionValues) { captureValues(transitionValues); } @Override public void captureEndValues(TransitionValues transitionValues) { captureValues(transitionValues); } private void captureValues(TransitionValues transitionValues) { final View view = transitionValues.view; transitionValues.values.put(PROP_BOUNDS, new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())); } @Override public Animator createAnimator(final ViewGroup sceneRoot, final TransitionValues startValues, final TransitionValues endValues) { ⴱ׭ך⡘縧׾⥂㶷

Slide 62

Slide 62 text

'BC5SBOTGPSNKBWB public class FabTransform extends Transition { @Override public void captureStartValues(TransitionValues transitionValues) { captureValues(transitionValues); } @Override public void captureEndValues(TransitionValues transitionValues) { captureValues(transitionValues); } private void captureValues(TransitionValues transitionValues) { final View view = transitionValues.view; transitionValues.values.put(PROP_BOUNDS, new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())); } @Override public Animator createAnimator(final ViewGroup sceneRoot, final TransitionValues startValues, final TransitionValues endValues) { USBOTJUJPO7BMVFTח⡘縧׾⥂㶷 ⴱ׭ך⡘縧׾⥂㶷

Slide 63

Slide 63 text

'BC5SBOTGPSNKBWB public class FabTransform extends Transition { @Override public void captureStartValues(TransitionValues transitionValues) { captureValues(transitionValues); } @Override public void captureEndValues(TransitionValues transitionValues) { captureValues(transitionValues); } private void captureValues(TransitionValues transitionValues) { final View view = transitionValues.view; transitionValues.values.put(PROP_BOUNDS, new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom())); } @Override public Animator createAnimator(final ViewGroup sceneRoot, final TransitionValues startValues, final TransitionValues endValues) { USBOTJUJPO7BMVFTח⡘縧׾⥂㶷 ⴱ׭ך⡘縧׾⥂㶷 穄׻׶ך⡘縧׾⥂㶷

Slide 64

Slide 64 text

@Override public Animator createAnimator(final ViewGroup sceneRoot, final TransitionValues startValues, final TransitionValues endValues) { final Rect startBounds = (Rect) startValues.values.get(PROP_BOUNDS); final Rect endBounds = (Rect) endValues.values.get(PROP_BOUNDS); ... final View view = endValues.view; circularReveal = ViewAnimationUtils.createCircularReveal(view, view.getWidth() / 2, view.getHeight() / 2, startBounds.width() / 2, (float) Math.hypot(endBounds.width() / 2, endBounds.height() / 2)); ... final AnimatorSet transition = new AnimatorSet(); transition.playTogether(circularReveal, translate, colorFade, iconFade); transition.playTogether(fadeContents); ... return new AnimatorUtils.NoPauseAnimator(transition); } }

Slide 65

Slide 65 text

@Override public Animator createAnimator(final ViewGroup sceneRoot, final TransitionValues startValues, final TransitionValues endValues) { final Rect startBounds = (Rect) startValues.values.get(PROP_BOUNDS); final Rect endBounds = (Rect) endValues.values.get(PROP_BOUNDS); ... final View view = endValues.view; circularReveal = ViewAnimationUtils.createCircularReveal(view, view.getWidth() / 2, view.getHeight() / 2, startBounds.width() / 2, (float) Math.hypot(endBounds.width() / 2, endBounds.height() / 2)); ... final AnimatorSet transition = new AnimatorSet(); transition.playTogether(circularReveal, translate, colorFade, iconFade); transition.playTogether(fadeContents); ... return new AnimatorUtils.NoPauseAnimator(transition); } } ⡲׏׋#PVOET׾《䖤

Slide 66

Slide 66 text

@Override public Animator createAnimator(final ViewGroup sceneRoot, final TransitionValues startValues, final TransitionValues endValues) { final Rect startBounds = (Rect) startValues.values.get(PROP_BOUNDS); final Rect endBounds = (Rect) endValues.values.get(PROP_BOUNDS); ... final View view = endValues.view; circularReveal = ViewAnimationUtils.createCircularReveal(view, view.getWidth() / 2, view.getHeight() / 2, startBounds.width() / 2, (float) Math.hypot(endBounds.width() / 2, endBounds.height() / 2)); ... final AnimatorSet transition = new AnimatorSet(); transition.playTogether(circularReveal, translate, colorFade, iconFade); transition.playTogether(fadeContents); ... return new AnimatorUtils.NoPauseAnimator(transition); } } ⡲׏׋#PVOET׾《䖤 #PVOET׾⢪׏ג $JSDVMBS3FWFBM׾⡲䧭

Slide 67

Slide 67 text

@Override public Animator createAnimator(final ViewGroup sceneRoot, final TransitionValues startValues, final TransitionValues endValues) { final Rect startBounds = (Rect) startValues.values.get(PROP_BOUNDS); final Rect endBounds = (Rect) endValues.values.get(PROP_BOUNDS); ... final View view = endValues.view; circularReveal = ViewAnimationUtils.createCircularReveal(view, view.getWidth() / 2, view.getHeight() / 2, startBounds.width() / 2, (float) Math.hypot(endBounds.width() / 2, endBounds.height() / 2)); ... final AnimatorSet transition = new AnimatorSet(); transition.playTogether(circularReveal, translate, colorFade, iconFade); transition.playTogether(fadeContents); ... return new AnimatorUtils.NoPauseAnimator(transition); } } 鼂獳⯋ך7JFXך#PVOEה鼂獳⯓ך#PVOE׾
 ⢪׏ג"OJNBUPS׾⡲׷ ⡲׏׋#PVOET׾《䖤 #PVOET׾⢪׏ג $JSDVMBS3FWFBM׾⡲䧭

Slide 68

Slide 68 text

ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 69

Slide 69 text

˖ ׮ה׮הךせ⵸כ.FBOJOHGVM USBOTJUJPO 䠐㄂ך֮׷鼂獳 ˖ ˑ⹛ֹך֮׷وذٔ،ٕדכծ鼂獳⚥ ח銲稆׾Ⱏ剣ׅ׷ֿהדծ乼⡲⚥ך ِ٦ؠ٦ך搊挿׾㼪ֹתׅկ˒ ؝ؚٖؔٓؿ؍

Slide 70

Slide 70 text

؝ؚٖؔٓؿ؍ 鸬竲䚍ؖ؎سٓ؎ٝ ˖ ؝ٝذٝخךׅץגך銲稆ָ
 Ⱏ剣ׁ׸׷㜥さ ˖ ؝ٝذٝخך銲稆ָקה׿וծ
 ת׋כת׏׋ֻⰟ剣ׁ׸זְ㜥さ "1*-FWFM

Slide 71

Slide 71 text

؝ؚٖؔٓؿ؍ 鸬竲䚍ؖ؎سٓ؎ٝ ։࢝࣌ؒ ऴྃ࣌ؒ $BSEͷԣ෯ NT NT $BSEͷॎ෯ NT NT 4IBSFE&MFNFOUͷ
 YͷҐஔ NT NT 4IBSFE&MFNFOUͷ
 ZͷҐஔ NT NT දࣔ͞ΕΔ7JFXͷ ಁ໌౓ NT NT

Slide 72

Slide 72 text

؝ؚٖؔٓؿ؍ 鸬竲䚍㹋鄲 'BCָ䎢ָ׷،صً٦ءّٝהずׄ״ֲח 4IBSFE&MFNFOU5SBOTJUJPO׾ⵃ欽ׅ׷ 簚ה埆ך،صً٦ءّٝךꟚ㨣儗꟦ךؤٖ׾ 邌植ׅ׷׋׭ח$VTUPN5SBOTJUJPO׾⡲䧭 AnimatorSet animatorSet = new AnimatorSet(); … widthAnim.setDuration(275); heightAnim.setStartDelay(30); heightAnim.setDuration(345); animatorSet.playTogether(widthAnim, heightAnim); "1*-FWFM

Slide 73

Slide 73 text

4IBSFE&MFNFOU5SBOTJUJP׾ ⵃ欽ׅ׷ػة٦ָٝ㢳ְךד ׮ֲ㼰׃䱠׶♴־תׅ

Slide 74

Slide 74 text

鸬竲䚍׾㹋鄲ׅ׷׋׭ח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ"#ח獳⹛ׅ׷㜥さ "DUJWJUZ# TUBSU"DUJWJUZ "1*-FWFM

Slide 75

Slide 75 text

鸬竲䚍׾㹋鄲ׅ׷׋׭ח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ"#ח獳⹛ׅ׷㜥さ "DUJWJUZ# &YJU5SBOTJUJPO 4IBSFE&MFNFOU&YJU5SBOTJUJPO TUBSU"DUJWJUZ "1*-FWFM

Slide 76

Slide 76 text

鸬竲䚍׾㹋鄲ׅ׷׋׭ח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ"#ח獳⹛ׅ׷㜥さ "DUJWJUZ# &YJU5SBOTJUJPO 4IBSFE&MFNFOU&YJU5SBOTJUJPO &OUFS5SBOTJUJPO 4IBSFE&MFNFOU&OUFS5SBOTJUJPO TUBSU"DUJWJUZ "1*-FWFM

Slide 77

Slide 77 text

鸬竲䚍׾㹋鄲ׅ׷׋׭ח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ"#ח獳⹛ׅ׷㜥さ "DUJWJUZ# &YJU5SBOTJUJPO 4IBSFE&MFNFOU&YJU5SBOTJUJPO &OUFS5SBOTJUJPO 4IBSFE&MFNFOU&OUFS5SBOTJUJPO TUBSU"DUJWJUZ אך鼂獳דאך5SBOTJUJPOָ饥׷ "1*-FWFM

Slide 78

Slide 78 text

鸬竲䚍׾㹋鄲ׅ׷׋׭ח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ#"ח䨱׷㜥さ "DUJWJUZ# 䨱׷نةٝ "1*-FWFM

Slide 79

Slide 79 text

鸬竲䚍׾㹋鄲ׅ׷׋׭ח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ#"ח䨱׷㜥さ "DUJWJUZ# 3FUVSO5SBOTJUJPO 4IBSFE&MFNFOU3FUVSO5SBOTJUJPO 䨱׷نةٝ "1*-FWFM

Slide 80

Slide 80 text

鸬竲䚍׾㹋鄲ׅ׷׋׭ח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ#"ח䨱׷㜥さ "DUJWJUZ# 3FFOUFS5SBOTJUJPO 4IBSFE&MFNFOU3FFOUFS5SBOTJUJPO 3FUVSO5SBOTJUJPO 4IBSFE&MFNFOU3FUVSO5SBOTJUJPO 䨱׷نةٝ "1*-FWFM

Slide 81

Slide 81 text

鸬竲䚍׾㹋鄲ׅ׷׋׭ח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ#"ח䨱׷㜥さ "DUJWJUZ# 3FFOUFS5SBOTJUJPO 4IBSFE&MFNFOU3FFOUFS5SBOTJUJPO 3FUVSO5SBOTJUJPO 4IBSFE&MFNFOU3FUVSO5SBOTJUJPO 䨱׷نةٝ אך鼂獳דⴽךאך5SBOTJUJPOָ饥׷ "1*-FWFM

Slide 82

Slide 82 text

5SBOTJUJPOךرغحؚ ➙וך5SBOTJUJPOָ⹛ְגְ׷׿׌׏ֽ ̔Ⰻגך5SBOTJUJPOװ8JOEPX"OJNBUJPO ׾⳿⸂ׅ׷ ؟ٝفٕ،فٔךًصُ٦ַ׵
 ˑ%FCVH˒ד剣⸬⻉דֹתׅ

Slide 83

Slide 83 text

5SBOTJUJPOךرغحؚ ˖ ،صً٦ءָّٝ傍ֻג
 ״ֻⴓַ׵זְ
 ̔Ꟛ涪罏ぢֽؔفءّٝד
 "OJNBUPSⱄ欰儗꟦أ؛٦ٕ׾㢌刿ׅ׷

Slide 84

Slide 84 text

5SBOTJUJPOךرغحؚ ˖ 7JFXָ5SBOTJUJPOך㼎韋חז׏גְ׷
 ךַ״ֻⴓַ׵זְ
 ̔#MJOL%FCVH5SBOTJUJPOؙٓأ׾
 ⡲׏׋ךד׉׸ד5SBOTJUJPOָ
 ⹛ְגְ׷ַ然钠׃ג׫׷ה葺ְ

Slide 85

Slide 85 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز

Slide 86

Slide 86 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ UIFNFךXJOEPX"DUJWJUZ5SBOTJUJPOTָ剣⸬חז׏גְ׷ "QQ$PNQBU5IFNFזו鋵ךذ٦وָ5IFNF.BUFSJBMח ז׏גְ׸ל㉏겗ז׃

Slide 87

Slide 87 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ UIFNFךXJOEPX"DUJWJUZ5SBOTJUJPOTָ剣⸬חז׏גְ׷ "QQ$PNQBU5IFNFזו鋵ךذ٦وָ5IFNF.BUFSJBMח ז׏גְ׸ל㉏겗ז׃ true

Slide 88

Slide 88 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ UIFNFךXJOEPX"DUJWJUZ5SBOTJUJPOTָ剣⸬חז׏גְ׷ "QQ$PNQBU5IFNFזו鋵ךذ٦وָ5IFNF.BUFSJBMח ז׏גְ׸ל㉏겗ז׃ true

Slide 89

Slide 89 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ UIFNFךXJOEPX"DUJWJUZ5SBOTJUJPOTָ剣⸬חז׏גְ׷ "QQ$PNQBU5IFNFזו鋵ךذ٦وָ5IFNF.BUFSJBMח ז׏גְ׸ל㉏겗ז׃ true

Slide 90

Slide 90 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ UIFNFךXJOEPX"DUJWJUZ5SBOTJUJPOTָ剣⸬חז׏גְ׷ "QQ$PNQBU5IFNFזו鋵ךذ٦وָ5IFNF.BUFSJBMח ז׏גְ׸ל㉏겗ז׃ ˖ *NBHF7JFXךTDBMF5ZQFְׄ׏ג׫׋ true

Slide 91

Slide 91 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ UIFNFךXJOEPX"DUJWJUZ5SBOTJUJPOTָ剣⸬חז׏גְ׷ "QQ$PNQBU5IFNFזו鋵ךذ٦وָ5IFNF.BUFSJBMח ז׏גְ׸ל㉏겗ז׃ ˖ *NBHF7JFXךTDBMF5ZQFְׄ׏ג׫׋ ˖ 7JFXך胜兝ח׍ׯ׿ה葿אְגְ׷ true

Slide 92

Slide 92 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز

Slide 93

Slide 93 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 3FDZDMFS7JFXך"EBQUFSךٗ٦سװ歗⫷ך铣׫鴥׿ד
 ٖ؎،ؐز׾䖉׏גַ׵5SBOTJUJPO׾Ꟛ㨣ׇׁ׋ְ

Slide 94

Slide 94 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 3FDZDMFS7JFXך"EBQUFSךٗ٦سװ歗⫷ך铣׫鴥׿ד
 ٖ؎،ؐز׾䖉׏גַ׵5SBOTJUJPO׾Ꟛ㨣ׇׁ׋ְ

Slide 95

Slide 95 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 3FDZDMFS7JFXך"EBQUFSךٗ٦سװ歗⫷ך铣׫鴥׿ד
 ٖ؎،ؐز׾䖉׏גַ׵5SBOTJUJPO׾Ꟛ㨣ׇׁ׋ְ ˖ "DUJWJUZ$PNQBUQPTUQPOF&OUFS5SBOTJUJPO BDUJWJUZ 
 ד5SBOTJUJPOךꟚ㨣׾䖉א

Slide 96

Slide 96 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 3FDZDMFS7JFXך"EBQUFSךٗ٦سװ歗⫷ך铣׫鴥׿ד
 ٖ؎،ؐز׾䖉׏גַ׵5SBOTJUJPO׾Ꟛ㨣ׇׁ׋ְ ˖ "DUJWJUZ$PNQBUQPTUQPOF&OUFS5SBOTJUJPO BDUJWJUZ 
 ד5SBOTJUJPOךꟚ㨣׾䖉א ˖ "DUJWJUZ$PNQBUTUBSU1PTUQPOFE&OUFS5SBOTJUJPO BDUJWJUZ דꟚ㨣
 7JFX5SFF0CTFSWFS0O1SF%SBX-JTUFOFSה穈׫さ׻ׇ׷

Slide 97

Slide 97 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز

Slide 98

Slide 98 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 4IBSFE&MFNFOU5SBOTJUJPOך㜥さח7JTJCJMJUZ׾
 竰䪫׃גְזְ5SBOTJUJPOחז׏גְ׷
 'BEFؙٓأָ⹛ַזְ ✳鹈꟦䝢׿׌

Slide 99

Slide 99 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 4IBSFE&MFNFOU5SBOTJUJPOך㜥さח7JTJCJMJUZ׾
 竰䪫׃גְזְ5SBOTJUJPOחז׏גְ׷
 'BEFؙٓأָ⹛ַזְ ✳鹈꟦䝢׿׌ ˖ 4IBSFדזְ8JOEPX5SBOTJUJPOך㜥さח7JTJCJMJUZַ 5SBOTJUJPO4FU׾竰䪫׃׋5SBOTJUJPOחז׏גְ׷

Slide 100

Slide 100 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 4IBSFE&MFNFOU5SBOTJUJPOך㜥さח7JTJCJMJUZ׾
 竰䪫׃גְזְ5SBOTJUJPOחז׏גְ׷
 'BEFؙٓأָ⹛ַזְ ✳鹈꟦䝢׿׌ ˖ 4IBSFדזְ8JOEPX5SBOTJUJPOך㜥さח7JTJCJMJUZַ 5SBOTJUJPO4FU׾竰䪫׃׋5SBOTJUJPOחז׏גְ׷ ˖ ̔խ⯓玎铡僇׃׋#MJOL%FCVH5SBOTJUJPOװ
 ׉ך7JTJCJMJUZ׾竰䪫׃׋غ٦آّٝך
 #MJOL7JTJCJMJUZ%FCVH5SBOTJUJPO׾⢪׏גرغحؚ׃ג׫ג ֻ׌ְׁ

Slide 101

Slide 101 text

5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 4IBSFE&MFNFOU5SBOTJUJPOך㜥さח7JTJCJMJUZ׾
 竰䪫׃גְזְ5SBOTJUJPOחז׏גְ׷
 'BEFؙٓأָ⹛ַזְ ✳鹈꟦䝢׿׌ ˖ 4IBSFדזְ8JOEPX5SBOTJUJPOך㜥さח7JTJCJMJUZַ 5SBOTJUJPO4FU׾竰䪫׃׋5SBOTJUJPOחז׏גְ׷ ˖ ̔խ⯓玎铡僇׃׋#MJOL%FCVH5SBOTJUJPOװ
 ׉ך7JTJCJMJUZ׾竰䪫׃׋غ٦آّٝך
 #MJOL7JTJCJMJUZ%FCVH5SBOTJUJPO׾⢪׏גرغحؚ׃ג׫ג ֻ׌ְׁ 醱꧟זךדծ؟ٝفٕ،فٔד׮ ת׌㸣樴חכ⹛ְגֶ׵׆姻湫穠圓㣐㢌

Slide 102

Slide 102 text

؝ؚٖؔٓؿ؍ 佝㼗朐ך⿾䘔 7JFX"OJNBUJPO6UJMTDSFBUF$JSDVMBS3FWFBM ד遤ֲ 5SBOTJUJPOד⢪ֲה1BVTF儗חؙٓحءُ 0QFSBUJPO/PU4VQQPSUFE&YDFQUJPO ׅ׷ ךדծ
 /P1BVTF"OJNBUPSؙٓأזו׾⡲׏ג
 ٓحف׃גⵃ欽ׅ׷ "1*-FWFM ࢀߟ: https://halfthought.wordpress.com/2014/11/07/reveal-transition/

Slide 103

Slide 103 text

ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 104

Slide 104 text

˖ ءأذي،؎؝ٝ
 אך堣腉׾䭯אֿהָ⳿勻׷ ˖ فٗتؙز،؎؝ٝ
 ،فٔ׾ⴱ׭ג饯⹛׃׋儗ח邌爙 ׅ׷،فٔ،؎؝ٝ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ،؎؝ٝ

Slide 105

Slide 105 text

˖ "OJNBUFE7FDUPS%SBXBCMF׾⢪ֲ倯岀 ˖ -PUUJFזוך؟٦سػ٦ذ؍ך
 ٓ؎ـٓٔ׾⢪ֲ倯岀 ؙٔؒ؎ذ؍ـזؕأةو؎ؤ 㹋鄲倯岀

Slide 106

Slide 106 text

،؎؝ٝך⹛ַ׃倯 "OJNBUFE7FDUPS%SBXBCMF׾⢪ֲ倯岀 ˖ "OJNBUFE7FDUPS%SBXBCMF YNM ׾⡲׏ג"OESPJEך
 فٗآؙؑزח㼪Ⰵׅ׷ ˖ "OJNBUFE7FDUPS%SBXBCMFכוֲװ׏ג⡲׷ַ
 "OESPJE*DPO"OJNBUPSֶָׅׅ׭ IUUQTSPNBOOVSJLHJUIVCJP"OESPJE*DPO"OJNBUPS Ⱗ⡤涸ז㼪Ⰵך➬倯חאְג铡僇׃גְֹתׅ

Slide 107

Slide 107 text

⹛ַ׃׋ְ47(ؿ؋؎ٕ׾ "OESPJE*DPO"OJNBUPSח
 سٓحؚ٥،ٝس٥
 سٗحفׅ׷ ،صً٦ءׇׁّٝ׷ ˟ 1BUIך㢌刿ח״׷،صً٦ ءّٝ 1BUI.PSUI כ㼎䘔 "1*-FWFMָחז׷ךד岣 䠐ׅ׷ ،؎؝ٝך⹛ַ׃倯 "OJNBUFE7FDUPS%SBXBCMF׾彊⪒ׅ׷ "1*-FWFM ،صً٦ءّٝ倯岀כ⟃♴ח֮׶תׅ
 2JJUB،صً٦ءّٝ،؎؝ָٝ⡲׸׷
 "OESPJE*DPO"OJNBUPS׾鍗׏ג׫׷

Slide 108

Slide 108 text

ٌآُ٦ٕךCVJMEHSBEMFד剣⸬חׅ׷ android { … defaultConfig { … vectorDrawables.useSupportLibrary true } ،؎؝ٝך⹛ַ׃倯 "OJNBUFE7FDUPS%SBXBCMF׾㼪Ⰵׅ׷ "1*-FWFM

Slide 109

Slide 109 text

ؙؒأه٦ز׃ג7FDUPS%SBXBCMFؿ؋؎ٕ׾
 剅ֹ⳿ׅ SFTESBXFBCMFؿٕؓتחⰅ׸׷ ،؎؝ٝך⹛ַ׃倯 "OJNBUFE7FDUPS%SBXBCMF׾㼪Ⰵׅ׷ "1*-FWFM

Slide 110

Slide 110 text

"QQ$PNQBU"DUJWJUZ׾ⵃ欽ׅ׷ ٖ؎،ؐزד*NBHF7JFXחBQQTSD$PNQBUד歗⫷׾䭷㹀 ،؎؝ٝך⹛ַ׃倯 "OJNBUFE7FDUPS%SBXBCMF׾㼪Ⰵׅ׷ "1*-FWFM

Slide 111

Slide 111 text

،؎؝ٝך⹛ַ׃倯 "OJNBUFE7FDUPS%SBXBCMF׾㼪Ⰵׅ׷ "1*-FWFM ֮הכ*NBHF7JFXַ׵%SBXBCMF׾《䖤׃ג
 TUBSU ًاحس׾ㄎן⳿׃ג֮־׸ל0, "OJNBUBCMF JNBHF7JFXHFU%SBXBCMF TUBSU ؟ٝفٕⰻ$SFBUJWF$VTUPNJ[BUJPO"DUJWJUZKBWB

Slide 112

Slide 112 text

"OJNBUFE7FDUPS%SBXBCMFךعو׶ וֿ׹ "1*-FWFM Android4.xͱAndroid5.xͱAndroid 7.xͰ
 ಈ͘ͷΛ֬ೝ͢Δ͜ͱ 
 startOffsetΛೖΕΔͱAndroid 4.xͰΞχϝʔγϣϯ
 ͠ͳ͘ͳΔͷͰɺ
 ରࡦͱͯ͠Կ΋͠ͳ͍ΞχϝʔγϣϯڬΜͰ͝·͔͢ ࢀߟ: Android Open Source Projctͷissue Ξχϝʔγϣϯͷࢦఆ͕ѱ͍ͱtargetSDK NҎ্ͩͱ Ϋϥογϡ͢ΔͷͰ஫ҙ ࢀߟ: Plaidͷissue

Slide 113

Slide 113 text

ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 114

Slide 114 text

歗⫷ך铣׫鴥׫ ˖ فؚٖٗحءـؿ؍٦س؎ٝ
 ַ׏ְְֿؿؑ٦س؎ٝ ˖ ⱖ溪ך植⫷Ⳣ椚⚥ךفٔٝة
 ׫׋ְחז׷ ˖ ،صً٦ءّٝך劍꟦כ歗⫷铣 ׫鴥׫ך㜥さ
 ꞿ׭חׅ׷

Slide 115

Slide 115 text

歗⫷ך铣׫鴥׫ "1*-FWFM *NBHF7JFXTFU$PMPS'JMUFS׾⢪ֲ $PMPS'JMUFSחכTFU4BUVSBUJPO ًاحسָ֮׷ךדծ ׉׸׾،صً٦ءّٝךؿٖ٦ي׀החㄎן⳿ׅ final ObservableColorMatrix cm = new ObservableColorMatrix(); ObjectAnimator saturation = ObjectAnimator.ofFloat(cm, ObservableColorMatrix.SATURATION, 0f, 1f); saturation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { imageView.setColorFilter(new ColorMatrixColorFilter(cm)); } }); 1MBJEך؝٦س״׶ ؟ٝفٕⰻ"OJNBUPS6UJMTKBWB

Slide 116

Slide 116 text

ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 117

Slide 117 text

歗꬗鼂獳 ˖ وذٔ،ٕرؠ؎ٝדכ넝䏝׾
 㢌ִ׷ֿהח״׏ג
 鋵銲稆ַ׵㶨銲稆חؿؓ٦ؕأך 㢌⻉׾爙ׅ ˖ وذٔ،ٌٕ٦ءّٝ刼简׾ⵃ欽 ׅ׷

Slide 118

Slide 118 text

歗꬗鼂獳 ˖ وذٔ،ٕرؠ؎ٝדכ넝䏝׾
 㢌ִ׷ֿהח״׏ג
 鋵銲稆ַ׵㶨銲稆חؿؓ٦ؕأך 㢌⻉׾爙ׅ ˖ وذٔ،ٌٕ٦ءّٝ刼简׾ⵃ欽 ׅ׷ 䕦ָ׌׿׌׿慬ֻז׷

Slide 119

Slide 119 text

歗꬗鼂獳 "1*-FWFM ˖ ؕأةي5SBOTJUJPOⰻד&MFWBUJPO׾ 0CKFDU"OJNBUPSד㢌⻉ׇׁג֮־׸ל0, @Override public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) { return ObjectAnimator.ofFloat(endValues.view, View.TRANSLATION_Z, initialElevation, finalElevation); } ؟ٝفٕⰻ-JGU05SBOTJUJPOKBWB 1MBJEך؝٦س״׶

Slide 120

Slide 120 text

ؖ؎سٓ؎ٝⰻך铡僇ׅ׷鿇ⴓ Ⰻ鿇鋅׸ת׃׋ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗꟦ה؎٦آؚٝ ˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣׫鴥׫ ˖ 歗꬗鼂獳

Slide 121

Slide 121 text

"OESPJE劢弫ך畭劣פך㼎䘔 ˖ "OESPJE"1*-FWFM ˖ "OESPJEךتحءُن٦سח״׷ה
 ךِ٦ؠ٦ָ"OESPJE⟃♳ ˖ 갫锃ח㟓ִגְ׷ %BUBDPMMFDUFEEVSJOHBEBZQFSJPEFOEJOHPO'FCSVBSZ %BTICPBSETIUUQTEFWFMPQFSBOESPJEDPNBCPVUEBTICPBSETJOEFYIUNM 植㖈ך朐屣

Slide 122

Slide 122 text

"OESPJE劢弫ך畭劣פך㼎䘔 ˖ "OESPJE劢弫ךِ٦ؠ٦דכ
 ،صً٦ءׇׁّٝזְ ˖ ؟٦سػ٦ذ؍ך
 ♴⡘✼䳔ٓ؎ـٓٔ׾ⵃ欽ׅ׷ ˖ "OESPJE劢弫׾镘׭׷

Slide 123

Slide 123 text

"OESPJE劢弫׾镘׭׷ ˖ 嚊銲 ˖ NJO4EL7FSTJPOחׅ׷ ˖ "OESPJE劢弫דכ؎ٝأز٦ٕדֹזֻׅ׷ ˖ ًٔحز ˖ 㹋鄲׃װֻׅז׷ ˖ رًٔحز ˖ ׉׸ז׶חِ٦ؠ٦ָ㽿׷ 㛇劤涸ח植朐דכַז׶ꨇ׃ְ

Slide 124

Slide 124 text

"OESPJE劢弫ךِ٦ؠ٦דכ
 ،صً٦ءׇׁّٝזְ ˖ 嚊銲 ˖ "OESPJEךغ٦آّٝח״׏גJG俑זודⴓ䀄ׇׁ׷ ˖ 4VQQPSU-JCSBSZזודדֹ׸ל׉׸׾⢪ֲ ˖ ًٔحز ˖ ׉׿זח㹋鄲؝أزכ넝ֻזְ ˖ رًٔحز ˖ ♧鿇ךِ٦ؠ٦דכ⡤꿀ָ殯ז׷ 㧅䔲זٓ؎ַٝ׮

Slide 125

Slide 125 text

؟٦سػ٦ذ؍ך ♴⡘✼䳔ٓ؎ـٓٔ׾ⵃ欽ׅ׷ ˖ 嚊銲 ˖ ؟٦سػ٦ذ؍ךٓ؎ـٓٔ׾⢪ֲ ˖ ًٔحز ˖ Ⰻגךِ٦ؠ٦ד،صً٦ءّٝ〳腉 ˖ رًٔحز ˖ 稢ְַ⹛ָֹ殯ז׏׋׶ծزٓـٕחז׏׋׶ծ
 ׉ך㜥さח儗꟦׾《׵׸ג׃תֲֿהָ֮׷ غٓٝأ葺ֻ《׶Ⰵ׸גְֻה葺ׁ׉ֲ

Slide 126

Slide 126 text

תה׭

Slide 127

Slide 127 text

תה׭ ˖ ،صً٦ءّٝכꅾ銲דׅ

Slide 128

Slide 128 text

תה׭ ˖ ،صً٦ءّٝכꅾ銲דׅ ˖ ؖ؎سٓ؎ٝה㹋鄲׾鋅גְֹת׃׋ ˖ ؟ٝفٕ،فٔך؝٦س鋅ג׫גֻ׌ְׁ

Slide 129

Slide 129 text

תה׭ ˖ ،صً٦ءّٝכꅾ銲דׅ ˖ ؖ؎سٓ؎ٝה㹋鄲׾鋅גְֹת׃׋ ˖ ؟ٝفٕ،فٔך؝٦س鋅ג׫גֻ׌ְׁ ˖ 4IBSFE&MFNFOU5SBOTJUJPOח״׷㹋鄲ָ㢳ְדׅ ˖ عو׶וֿ׹ָ㢳ְדָׅծثٍٖٝآ׃ג׫גֻ׌ְׁ

Slide 130

Slide 130 text

תה׭ ˖ ،صً٦ءّٝכꅾ銲דׅ ˖ ؖ؎سٓ؎ٝה㹋鄲׾鋅גְֹת׃׋ ˖ ؟ٝفٕ،فٔך؝٦س鋅ג׫גֻ׌ְׁ ˖ 4IBSFE&MFNFOU5SBOTJUJPOח״׷㹋鄲ָ㢳ְדׅ ˖ عو׶וֿ׹ָ㢳ְדָׅծثٍٖٝآ׃ג׫גֻ׌ְׁ ˖ "OESPJE劢弫ך㼎䘔חאְגכծ搀椚׃גⰋגך04ד
 ⹛ַׁזֻג׮葺ְַ׮׃׸תׇ׿

Slide 131

Slide 131 text

תה׭ ˖ ،صً٦ءّٝכꅾ銲דׅ ˖ ؖ؎سٓ؎ٝה㹋鄲׾鋅גְֹת׃׋ ˖ ؟ٝفٕ،فٔך؝٦س鋅ג׫גֻ׌ְׁ ˖ 4IBSFE&MFNFOU5SBOTJUJPOח״׷㹋鄲ָ㢳ְדׅ ˖ عو׶וֿ׹ָ㢳ְדָׅծثٍٖٝآ׃ג׫גֻ׌ְׁ ˖ "OESPJE劢弫ך㼎䘔חאְגכծ搀椚׃גⰋגך04ד
 ⹛ַׁזֻג׮葺ְַ׮׃׸תׇ׿ ˖ وذٔ،ٕرؠ؎ٝך،صً٦ءّٝכדֹתׅ

Slide 132

Slide 132 text

תה׭ ˖ ،صً٦ءّٝכꅾ銲דׅ ˖ ؖ؎سٓ؎ٝה㹋鄲׾鋅גְֹת׃׋ ˖ ؟ٝفٕ،فٔך؝٦س鋅ג׫גֻ׌ְׁ ˖ 4IBSFE&MFNFOU5SBOTJUJPOח״׷㹋鄲ָ㢳ְדׅ ˖ عو׶וֿ׹ָ㢳ְדָׅծثٍٖٝآ׃ג׫גֻ׌ְׁ ˖ "OESPJE劢弫ך㼎䘔חאְגכծ搀椚׃גⰋגך04ד
 ⹛ַׁזֻג׮葺ְַ׮׃׸תׇ׿ ˖ وذٔ،ٕرؠ؎ٝך،صً٦ءّٝכדֹתׅ ˖ NBUFSJBMFMFNFOU IUUQHJUJPFMFNFOU ׾(JU)VCד
 4UBS׃גֻ׌ְׁ

Slide 133

Slide 133 text

5IBOLT

Slide 134

Slide 134 text

5IBOLT ˖ %FTJHOFSTPSBTIJO
 IUUQTHJUIVCDPNTPSBTIJO

Slide 135

Slide 135 text

5IBOLT ˖ %FTJHOFSTPSBTIJO
 IUUQTHJUIVCDPNTPSBTIJO

Slide 136

Slide 136 text

5IBOLT ˖ %FTJHOFSTPSBTIJO
 IUUQTHJUIVCDPNTPSBTIJO ˖ 1MBJE
 IUUQTHJUIVCDPNOJDLCVUDIFSQMBJE

Slide 137

Slide 137 text

5IBOLT ˖ %FTJHOFSTPSBTIJO
 IUUQTHJUIVCDPNTPSBTIJO ˖ 1MBJE
 IUUQTHJUIVCDPNOJDLCVUDIFSQMBJE ˖ "OESPJE0QFO4PVSDF1SPKFDU
 IUUQTTPVSDFBOESPJEDPNTPVSDFMJDFOTFTIUNM

Slide 138

Slide 138 text

5IBOLT ˖ %FTJHOFSTPSBTIJO
 IUUQTHJUIVCDPNTPSBTIJO ˖ 1MBJE
 IUUQTHJUIVCDPNOJDLCVUDIFSQMBJE ˖ "OESPJE0QFO4PVSDF1SPKFDU
 IUUQTTPVSDFBOESPJEDPNTPVSDFMJDFOTFTIUNM ˖ %SPJE,BJHJPDJBM"OESPJEBQQ
 IUUQTHJUIVCDPN%SPJE,BJHJDPOGFSFODFBQQ