Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
How to implement material design animation droi...
Search
takahirom
May 07, 2017
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How to implement material design animation droid girls version
編集中です。
takahirom
May 07, 2017
More Decks by takahirom
See All by takahirom
AIエージェントで 変わるAndroid開発環境
takahirom
3
920
AndroidアプリのAI実装をAndroidifyで学ぶ ー Google公式サンプルによる体験と実装 ー
takahirom
0
170
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
1.2k
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
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.3k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
390
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
590
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.3k
Intent as Code
shoppingjaws
6
1.1k
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
290
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
380
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
20
20k
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
0
250
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
750
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
5.1M
GitHub's CSS Performance
jonrohan
1033
470k
For a Future-Friendly Web
brad_frost
183
10k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Automating Front-end Workflow
addyosmani
1369
210k
sira's awesome portfolio website redesign presentation
elsirapls
0
430
How to build a perfect <img>
jonoalderson
1
6.1k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
Paper Plane
katiecoart
PRO
4
53k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
780
Transcript
)PXUPJNQMFNFOU NBUFSJBMEFTJHOBOJNBUJPO %SPJE(JSMT晛 UBLBIJSPN
˖ 劤せכ嬁「䃨峔 ׄױַמ ˖ "OESPJEָ㥨ֹ ˖ UBLBIJSPNהְֲせד 2JJUBהַ剅ְגְךד ״׃ֶֻ격ְ׃תׅ
荈䊹稱➜
– Motion Lead @Google. John Schlemmer “one of the main
components of what makes material, material. ”
˖ ٌ٦ءّٝךꅾ銲䚍 ˖ ٌ٦ءّٝך⾱ ˖ ؖ؎سٓ؎ٝה㹋鄲 ˖ "OESPJE劢弫ך畭劣דוֲ㹋鄲ַׅ ˖ תה
湡如
ז،صً٦ءׇׁّٝ ַ
˖ ؽُ٦ך搊挿ךؖ؎س ˖ ِ٦ؠ٦ָ乼⡲㸣✪ׅה⡦ָ饯ֹךַؼٝز爙ׅ ˖ 銲稆ךꥡ㾴涸ծ瑞涸זꟼ⤘ ˖ 胜䖓ד遤גְⳢ椚؝ٝذٝخך《䖤ծ 如ךؽُ٦ך铣鴥זוַ岣湡ׅ ˖
ٍؙؗٓة٦ծ峤箺ծ嚂׃ ٌ٦ءّٝךꅾ銲䚍 罋ִֿה幾ׅ ⴓַװֻׅ .BUFSJBM%FTJHO(VJEFMJOF״
וֲװג وذٔ،ٕرؠ؎ٝד ،صً٦ءַׇׁّٝ
˖ 3FTQPOTJWF ̔⽯䏟ח䘔׃ג鸞䏝ָ鸞ְ ٌ٦ءّٝך⾱ .BUFSJBM%FTJHO(VJEFMJOF״ %SPJE,BJHJPDJBM"OESPJEBQQ״
˖ 3FTQPOTJWF ̔⽯䏟ח䘔׃ג鸞䏝ָ鸞ְ ˖ /BUVSBM ̔荈搫ז⹛ֹ ٌ٦ءّٝך⾱ .BUFSJBM%FTJHO(VJEFMJOF״
˖ 3FTQPOTJWF ̔⽯䏟ח䘔׃ג鸞䏝ָ鸞ְ ˖ /BUVSBM ̔荈搫ז⹛ֹ ˖ "XBSF ̔➭ךوذٔ،ٕה䓼锃⹛⡲ ٌ٦ءّٝך⾱
.BUFSJBM%FTJHO(VJEFMJOF״
˖ 3FTQPOTJWF ̔⽯䏟ח䘔׃ג鸞䏝ָ鸞ְ ˖ /BUVSBM ̔荈搫ז⹛ֹ ˖ "XBSF ̔➭ךوذٔ،ٕה䓼锃⹛⡲ ˖
*OUFOUJPOBM ̔䠐㔳ָ֮ ٌ٦ءّٝך⾱ .BUFSJBM%FTJHO(VJEFMJOF״ %SPJE,BJHJPDJBM"OESPJEBQQ QVMM ״
וֲ㹋鄲ַׅ
NBUFSJBMFMFNFOU IUUQHJUJPFMFNFOU ؟ٝفٕ،فٔ⡲ת׃
وذٔ،ٕرؠ؎ٝ ؖ؎سٓ؎ٝ ⯋ח⡲䧭 HJUJPFMFNFOU
א׆אؖ؎سٓ؎ַٝ 鷄ג״ֲ
˖ وذٔ،ٕرؠ؎ٝ ˖ ٌ٦ءّٝ ˖ أة؎ٕ ˖ ٖ؎،ؐز ˖ ؝ٝه٦طٝز
˖ ػة٦ٝ ˖ 㷕统ה䞔㜠䲿⣘ ˖ ِ٦ؠؽٔذ؍ ˖ ٔا٦أ وذٔ،ٕرؠ؎ٝؖ؎سٓ؎ٝ אך畍ַ圓䧭ׁ
ؖ؎سٓ؎ٝⰻך%SPJE,BJHJד 铡僇׃鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ
˖ 麊⹛ ˖ وذٔ،ٕך㢌䕎 ˖ ؝ؚٖؔٓؿ؍ ˖ ؙٔؒ؎ذ؍ـזؕأةو؎ؤ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳
ؖ؎سٓ؎ٝⰻך铡僇ׅ鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ ˖
麊⹛ ˖ ؝ؚٖؔٓؿ؍ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳
˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ ˖ 麊⹛
˖ ؝ؚٖؔٓؿ؍ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳 ؖ؎سٓ؎ٝⰻך铡僇ׅ鿇ⴓ
넝䏝הءٍسؐ 䕦ח岣湡 ةحف儗ח嵤ֹ♳ָג鋅ִ %SPJE,BJHJPDJBM"OESPJEBQQ״
넝䏝הءٍسؐ ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز ؖ؎سٓ؎ٝ ةحف儗ח7JFXEQ♳ָ EQ⹛涸넝䏝ؔؿإحز 䬃׃גזְ儗ך 넝䏝 䬃׃גְהֹך 넝䏝 'MPBUJOH"DUJPO#VUUPO
EQ EQ #VUUPO EQ EQ $BSE EQ EQ
ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 <ImageView android:id="@+id/shot" android:layout_width=“wrap_content" android:layout_height="wrap_content" android:elevation="@dimen/z_card" android:stateListAnimator="@animator/raise" android:foreground="@drawable/mid_grey_ripple" app:badgeGravity="end|bottom"
app:badgePadding="@dimen/padding_normal" /> TUBUF-JTU"OJNBUPSכ"1*-FWFM劢弫ד搀鋔ׁ "1*-FWFM "OESPJE TUBUF-JTU"OJNBUPS⢪ֲ ٖ؎،ؐز9.-ⰻ
ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_pressed="true"> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ"
android:valueTo="@dimen/touch_raise" /> </item> <item> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueTo="0dp" /> </item> </selector> BOJNBUPS@SBJTFYNM
ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_pressed="true"> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ"
android:valueTo="@dimen/touch_raise" /> </item> <item> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueTo="0dp" /> </item> </selector> 䬃׃גְהֹך،صً٦ءّٝ 䭷㹀ׅ BOJNBUPS@SBJTFYNM
ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_pressed="true"> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ"
android:valueTo="@dimen/touch_raise" /> </item> <item> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueTo="0dp" /> </item> </selector> USBOTJUJPO;EQחׅ BOJNBUPS@SBJTFYNM
ٖأهٝءـ넝䏝ה⹛涸넝䏝ؔؿإحز 㹋鄲 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_pressed="true"> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ"
android:valueTo="@dimen/touch_raise" /> </item> <item> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueTo="0dp" /> </item> </selector> BOJNBUPS@SBJTFYNM EQ ההך&MFWBUJPO EQ ⹛涸넝䏝ؔؿإحز EQ חז
ؖ؎سٓ؎ٝⰻך铡僇ׅ鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ ˖
麊⹛ ˖ ؝ؚٖؔٓؿ؍ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳
竰竲儗 騃ꨄָꞿְקו،صً٦ءّٝ儗ָꞿְ
˖ NT馄ִזְ״ֲחׅ QMBJEזודך،صً٦ءַّٝ 䱿庠 ˖ NTַNTךד ⹛ַׅ騃ꨄח״ג锃侭 ˖ ةـٖحزזוך畭劣ח
״ג㢌ִקֲָ葺ְ 㣐ְֹ畭劣קוꞿֻ ˖ TFU%VSBUJPO ⵃ欽ׅ 竰竲儗
ؖ؎سٓ؎ٝⰻך铡僇ׅ鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ ˖
麊⹛ ˖ ؝ؚٖؔٓؿ؍ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳
؎٦آؚٝ &BTJOH$VSWFTכ،صً٦ءّٝך أؾ٦سװ鷲僇䏝ծ㣐ֹׁזוח黝䘔ׁ
ٌ٦ءّٝ؎٦آؚٝ ؖ؎سٓ؎ٝ Ͳ͜Ͱ͏͔ ඪ४Χʔϒ4UBOEBSEDVSWF ը໘Ͱͷӡಈ ݮΧʔϒ%FDFMFSBUJPODVSWF ը໘ʹೖΔӡಈ ՃΧʔϒ"DDFMFSBUJPODVSWF ը໘͔Βग़Δӡಈ ٸΧʔϒ4IBSQDVSWF
͍ͭͰը໘ʹೖΕΔΦϒδΣΫτ ͷӡಈ
ٌ٦ءّٝ؎٦آؚٝ 㹋鄲 Ͳ͏࣮͢Δ͔ ඪ४Χʔϒ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
وذٔ،ٕرؠ؎ٝؖ؎سٓ؎ٝ ➙㔐《♳־،صً٦ءّٝ鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ
˖ 麊⹛ ˖ ؝ؚٖؔٓؿ؍ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳
麊⹛ 植㹋ך⚅歲הずׄ״ֲח♴倯ぢחꅾ⸂ָ֮ךד ♴ך倯ぢח花䕎חז
麊⹛ 㹋鄲
麊⹛ 㹋鄲 ext, TransformingActivity.class); nsCompat.makeSceneTransitionAnimation( iew,getString(R.string.transition_name)).toBundle(); ontext, intent, options); .BJO"DUJWJUZ
5SBOTGPSNJOH"DUJWJUZ <ImageView android:layout_width="mat android:layout_height="wr android:transitionName="@ <style name="AppTheme.No ٖ؎،ؐز ذ٦و
"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
5SBOTGPSNJOH"DUJWJUZ <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:transitionName="@string/transition_name"/> <style name="AppTheme.NoActionBar.Detail"> <item name="android:windowSharedElementEnterTransition">@transition/ default_share</item>
<item name="android:windowSharedElementReturnTransition">@transition/ ٖ؎،ؐز ذ٦و ٖ؎،ؐزדUSBOTJUJPO/BNF䭷㹀
<ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:transitionName="@string/transition_name"/> <style name="AppTheme.NoActionBar.Detail"> <item name="android:windowSharedElementEnterTransition">@transition/ default_share</item> <item
name="android:windowSharedElementReturnTransition">@transition/ default_share</item> </style> ٖ؎،ؐز ذ٦و 5SBOTJUJPO <?xml version="1.0" encoding="utf-8"?> <transitionSet .. android:duration="350" android:interpolator="..."> <changeBounds/> ذ٦وד5SBOTJUJPO䭷㹀
android:layout_height="wrap_content" android:transitionName="@string/transition_name"/> <style name="AppTheme.NoActionBar.Detail"> <item name="android:windowSharedElementEnterTransition">@transition/ default_share</item> <item name="android:windowSharedElementReturnTransition">@transition/ default_share</item>
</style> ذ٦و 5SBOTJUJPO <?xml version="1.0" encoding="utf-8"?> <transitionSet .. android:duration="350" android:interpolator="..."> <changeBounds/> <pathMotion class="**.GravityArcMotion" /> </transitionSet> QBUI.PUJPO䭷㹀 ֿח״嘴ⰼ䕎חז DIBOHF#PVOETד獳⹛ 㣐ֹׁ㢌⻉
麊⹛ 㹋鄲 QBUI.PUJPOⵃ欽ׅկ ׃垥彊ך"SD.PSUJPOؙٓأⵃ欽 ׅה♳ח花،صً٦ءّٝד ♶黝ⴖהׁגְ⹛ֹהז IUUQTEFWFMPQFSBOESPJEDPNSFGFSFODFBOESPJEUSBOTJUJPO"SD.PUJPOIUNM "1*-FWFM 5SBOTJUJPOך䭷㹀⢽ ❌
˖ 1MBJEח"SD.PUJPOؙٓأ 䭁䓸׃(SBWJUZ"SD.PUJPOؙٓأָ ֮ QMBJE(SBWJUZ"SD.PUJPOKBWB ˖ ծك٦أה׃גְ ؿٖ٦يٙ٦ؙך؝٦سָ〢ֻծ 暴㹀ך勴⟝ך儗ח ֲתֻ،صً٦ءّٝ׃זְծ⡲
湫׃ QMBJEחفؙٕٔؒأز鷏ת׃ NBUFSJBMFMFNFOU (SBWJUZ"SD.PUJPOKBWB 荈搫ז䓜⡲חכ ˟1MBJEהכ(PPHMFךوذٔ،ٕرؠ؎ٝך ؔ٦فٝا٦أך罋㹋鄲דַאرؠ؎ٝصُ٦أ،فٔ <?xml version="1.0" encoding="utf-8"?> <transitionSet … android:duration="350" android:interpolator=“…”> <changeBounds/> <pathMotion class=“**.GravityArcMotion” /> </transitionSet>
ؖ؎سٓ؎ٝⰻך铡僇ׅ鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ ˖
麊⹛ ˖ ؝ؚٖؔٓؿ؍ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳
˖ ההךせכ.FBOJOHGVM USBOTJUJPO 䠐ך֮鼂獳 ˖ ˑ⹛ֹך֮وذٔ،ٕדכծ鼂獳⚥ ח銲稆Ⱏ剣ֿׅהדծ乼⡲⚥ך ِ٦ؠ٦ך搊挿㼪ֹתׅկ˒ ؝ؚٖؔٓؿ؍
؝ؚٖؔٓؿ؍ 鸬竲䚍ؖ؎سٓ؎ٝ ˖ ؝ٝذٝخךׅץגך銲稆ָ Ⱏ剣ׁ㜥さ ˖ ؝ٝذٝخך銲稆ָקהוծ תכתֻⰟ剣ׁזְ㜥さ Ⱏ剣׃זְ㜥さכ 胜兝ךؕ٦سךⰟ剣
"1*-FWFM
؝ؚٖؔٓؿ؍ 鸬竲䚍ؖ؎سٓ؎ٝ ։࢝࣌ؒ ऴྃ࣌ؒ $BSEͷԣ෯ NT NT $BSEͷॎ෯ NT NT
4IBSFE&MFNFOUͷ YͷҐஔ NT NT 4IBSFE&MFNFOUͷ ZͷҐஔ NT NT දࣔ͞ΕΔ7JFXͷ ಁ໌ NT NT
؝ؚٖؔٓؿ؍ 鸬竲䚍㹋鄲 'BCָ䎢ָ،صً٦ءّٝהずׄ״ֲח 4IBSFE&MFNFOU5SBOTJUJPOⵃ欽ׅ 簚ה埆ך،صً٦ءّٝך㨣儗ךؤٖ 邌植ׅח$VTUPN5SBOTJUJPO⡲䧭 AnimatorSet animatorSet = new
AnimatorSet(); … widthAnim.setDuration(275); heightAnim.setStartDelay(30); heightAnim.setDuration(345); animatorSet.playTogether(widthAnim, heightAnim); "1*-FWFM
4IBSFE&MFNFOU5SBOTJUJP ⵃ欽ׅػة٦ָٝ㢳ְךד ֲ㼰׃䱠♴־תׅ
鸬竲䚍㹋鄲ׅח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ"#ח獳⹛ׅ㜥さ "DUJWJUZ# &YJU5SBOTJUJPO 4IBSFE&MFNFOU&YJU5SBOTJUJPO &OUFS5SBOTJUJPO 4IBSFE&MFNFOU&OUFS5SBOTJUJPO TUBSU"DUJWJUZ
אך鼂獳דאך5SBOTJUJPOָ饥 "1*-FWFM
鸬竲䚍㹋鄲ׅח "DUJWJUZ5SBOTJUJPOך㛇燉濼陎 "DUJWJUZ" "DUJWJUZ#"ח䨱㜥さ "DUJWJUZ# 3FFOUFS5SBOTJUJPO 4IBSFE&MFNFOU3FFOUFS5SBOTJUJPO 3FUVSO5SBOTJUJPO 4IBSFE&MFNFOU3FUVSO5SBOTJUJPO 䨱نةٝ
אך鼂獳דⴽךאך5SBOTJUJPOָ饥 "1*-FWFM
5SBOTJUJPOךرغحؚ ➙וך5SBOTJUJPOָ⹛ְגְֽ ̔Ⰻגך5SBOTJUJPOװ8JOEPX"OJNBUJPO ⳿⸂ׅ ؟ٝفٕ،فٔךًصُ٦ַ ˑ%FCVH˒ד剣⸬⻉דֹתׅ
5SBOTJUJPOךرغحؚ ˖ ،صً٦ءָّٝ傍ֻג ״ֻⴓַזְ ̔涪罏ぢֽؔفءّٝד "OJNBUPSⱄ欰儗أ؛٦ٕ㢌刿ׅ
5SBOTJUJPOךرغحؚˏ ˖ OJDLCVUDIFS"OJNBUPS%VSBUJPO5JMF ˖ $VTUPN2VJDL4FUUJOHTד "OJNBUPSⱄ欰儗أ؛٦ٕ 㢌刿דֹկץկ
5SBOTJUJPOךرغحؚ <transitionSet> <targets> <target android:targetId="@id/image" /> </targets> <transition class="**.BlinkDebugTransition" />
</transitionSet> ˖ 7JFXָ5SBOTJUJPOך㼎韋חזגְ ךַ״ֻⴓַזְ ̔#MJOL%FCVH5SBOTJUJPOؙٓأ ⡲ךדד5SBOTJUJPOָ ⹛ְגְַ然钠׃גה葺ְ
5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ UIFNFךXJOEPX"DUJWJUZ5SBOTJUJPOTָ剣⸬חזגְ "QQ$PNQBU5IFNFזו鋵ךذ٦وָ5IFNF.BUFSJBMח זגְל㉏겗ז׃ ˖ *NBHF7JFXךTDBMF5ZQFְׄג ְׄגְהֹ
כDIBOHF*NBHF5SBOTGPSNךUSBOTJUJPOָ֮הֲתְֻֻ ַ ˖ 7JFXך胜兝חׯה葿אְגְ <item name="android:windowContentTransitions">true</item>
5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 3FDZDMFS7JFXך"EBQUFSךٗ٦سװ歗⫷ך铣鴥ד ٖ؎،ؐز䖉גַ5SBOTJUJPO㨣ְׇׁ ˖ "DUJWJUZ$PNQBUQPTUQPOF&OUFS5SBOTJUJPO BDUJWJUZ ד5SBOTJUJPOך㨣䖉א
˖ "DUJWJUZ$PNQBUTUBSU1PTUQPOFE&OUFS5SBOTJUJPO BDUJWJUZ ד㨣 7JFX5SFF0CTFSWFS0O1SF%SBX-JTUFOFSה穈さׇ
5SBOTJUJPOָ ֲתֻ⹛ַזְהֹךثؑحؙٔأز ˖ 4IBSFE&MFNFOU5SBOTJUJPOך㜥さח7JTJCJMJUZ 竰䪫׃גְזְ5SBOTJUJPOחזגְ 'BEFؙٓأָ⹛ַזְ ✳鹈䝢 ˖ 4IBSFדזְ8JOEPX5SBOTJUJPOך㜥さח7JTJCJMJUZַ
5SBOTJUJPO4FU竰䪫׃5SBOTJUJPOחזגְ ˖ ̔խ⯓玎铡僇׃#MJOL%FCVH5SBOTJUJPOװ ך7JTJCJMJUZ竰䪫׃غ٦آّٝך #MJOL7JTJCJMJUZ%FCVH5SBOTJUJPO⢪גرغحؚ׃גג ְֻׁ 醱꧟זךדծ؟ٝفٕ،فٔד ת㸣樴חכ⹛ְגֶ׆姻湫穠圓㣐㢌
ؖ؎سٓ؎ٝⰻך铡僇ׅ鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ ˖
麊⹛ ˖ ؝ؚٖؔٓؿ؍ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳
歗⫷ך铣鴥 ˖ فؚٖٗحءـؿ؍٦س؎ٝ ְְַֿؿؑ٦س؎ٝ ˖ ⱖ溪ך植⫷Ⳣ椚⚥ךفٔٝة ְחז ˖ ،صً٦ءّٝך劍כ歗⫷铣 鴥ך㜥さ
ꞿחׅ
歗⫷ך铣鴥 "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
ؖ؎سٓ؎ٝⰻך铡僇ׅ鿇ⴓ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ ˖
麊⹛ ˖ ؝ؚٖؔٓؿ؍ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳
歗鼂獳 ˖ وذٔ،ٕرؠ؎ٝדכ넝䏝 㢌ִֿהח״ג 鋵銲稆ַ㶨銲稆חؿؓ٦ؕأך 㢌⻉爙ׅ ˖ وذٔ،ٌٕ٦ءّٝ刼简ⵃ欽 ׅ 䕦ָ慬ֻז
歗鼂獳 "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); } ؟ٝفٕⰻ-JGU05SBOTJUJPOKBWB 1MBJEך؝٦س״
ؖ؎سٓ؎ٝⰻך铡僇ׅ鿇ⴓ Ⰻ鿇鋅ת׃ ˖ وذٔ،ٕرؠ؎ٝ ˖ 넝䏝הءٍسؐ ˖ ٌ٦ءّٝ ˖ 竰竲儗ה؎٦آؚٝ
˖ 麊⹛ ˖ ؝ؚٖؔٓؿ؍ ˖ ػة٦ٝ ˖ 歗⫷ך铣鴥 ˖ 歗鼂獳
"OESPJE劢弫ך畭劣פך㼎䘔 ˖ "OESPJE"1*-FWFM ˖ "OESPJEךتحءُن٦سח״ה ךِ٦ؠ٦ָ"OESPJE⟃♳ ˖ 갫锃ח㟓ִגְ %BUBDPMMFDUFEEVSJOHBEBZQFSJPEFOEJOHPO'FCSVBSZ
%BTICPBSETIUUQTEFWFMPQFSBOESPJEDPNBCPVUEBTICPBSETJOEFYIUNM 植㖈ך朐屣
"OESPJE劢弫ך畭劣פך㼎䘔 ˖ "OESPJE劢弫ךِ٦ؠ٦דכ ،صً٦ءׇׁّٝזְ ˖ ؟٦سػ٦ذ؍ך ♴⡘✼䳔ٓ؎ـٓٔⵃ欽ׅ ˖ "OESPJE劢弫镘
"OESPJE劢弫镘 ˖ 嚊銲 ˖ NJO4EL7FSTJPOחׅ ˖ "OESPJE劢弫דכ؎ٝأز٦ٕדֹזֻׅ ˖ ًٔحز ˖
㹋鄲׃װֻׅז ˖ رًٔحز ˖ זחِ٦ؠ٦ָ㽿 㛇劤涸ח植朐דכַזꨇ׃ְ
"OESPJE劢弫ךِ٦ؠ٦דכ ،صً٦ءׇׁّٝזְ ˖ 嚊銲 ˖ "OESPJEךغ٦آّٝח״גJG俑זודⴓ䀄ׇׁ ˖ 4VQQPSU-JCSBSZזודדֹל⢪ֲ ˖ ًٔحز
˖ זח㹋鄲؝أزכ넝ֻזְ ˖ رًٔحز ˖ ♧鿇ךِ٦ؠ٦דכ⡤꿀ָ殯ז 㧅䔲זٓ؎ַٝ
؟٦سػ٦ذ؍ך ♴⡘✼䳔ٓ؎ـٓٔⵃ欽ׅ ˖ 嚊銲 ˖ ؟٦سػ٦ذ؍ךٓ؎ـٓٔ⢪ֲ ˖ ًٔحز ˖ Ⰻגךِ٦ؠ٦ד،صً٦ءّٝ〳腉
˖ رًٔحز ˖ 稢ְַ⹛ָֹ殯זծزٓـٕחזծ ך㜥さח儗《ג׃תֲֿהָ֮ غٓٝأ葺ֻ《Ⰵגְֻה葺ֲׁ
תה ˖ ،صً٦ءّٝכꅾ銲דׅ ˖ ؖ؎سٓ؎ٝה㹋鄲鋅גְֹת׃ ˖ ؟ٝفٕ،فٔך؝٦س鋅גגְֻׁ ˖ 4IBSFE&MFNFOU5SBOTJUJPOח״㹋鄲ָ㢳ְדׅ ˖
عوוָֿ㢳ְדָׅծثٍٖٝآ׃גגְֻׁ ˖ "OESPJE劢弫ך㼎䘔חאְגכծ搀椚׃גⰋגך04ד ⹛ַׁזֻג葺ְַ׃תׇ ˖ وذٔ،ٕرؠ؎ٝך،صً٦ءّٝכדֹתׅ ˖ NBUFSJBMFMFNFOU IUUQHJUJPFMFNFOU (JU)VCד 4UBS׃גְֻׁ
5IBOLT ˖ %FTJHOFSTPSBTIJO IUUQTHJUIVCDPNTPSBTIJO ˖ 1MBJE IUUQTHJUIVCDPNOJDLCVUDIFSQMBJE ˖ "OESPJE0QFO4PVSDF1SPKFDU IUUQTTPVSDFBOESPJEDPNTPVSDFMJDFOTFTIUNM
˖ %SPJE,BJHJPDJBM"OESPJEBQQ IUUQTHJUIVCDPN%SPJE,BJHJDPOGFSFODFBQQ