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
iOSDCのペンライトを自動制御したい!
akkeylab
0
340
AHC070解法紹介
eijirou
0
150
Webの地図
yosuke_furukawa
PRO
6
5k
Verilogで学ぶCPU自作入門.pdf
uyuki234
7
3.9k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
300
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
270
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
470
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
170
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
290
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
250
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
260
Featured
See All Featured
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
550
Navigating Weather and Climate Data
rabernat
0
540
Being A Developer After 40
akosma
91
590k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
850
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
380
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Building the Perfect Custom Keyboard
takai
2
890
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
750
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
380
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
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