๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[Android] ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜

์‹œ์ž‘

๋””์ž์ด๋„ˆ๊ฐ€ ์•ฑ ์ „๋ฐ˜์ ์œผ๋กœ ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€๋ฅผ ์š”์ฒญํ–ˆ๋‹ค. 

 

์š”๊ตฌ ์‚ฌํ•ญ

์•ฑ์˜ ํ™”๋ฉด ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ ๋‘˜๋กœ ๋‚˜๋‰œ๋‹ค. ์ƒ๋‹จ ํˆด๋ฐ” ๋ฒ„ํŠผ ์ข…๋ฃŒ ๋ชจ์–‘์ด ํ™”์‚ดํ‘œ(←)์ธ ๊ฒƒ๊ณผ ์—‘์Šค(X)์ธ ๊ฒƒ์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

 

1. ←ํ™”๋ฉด์— ์ง„์ž…ํ•  ๋•Œ

  • ๊ฐ€๋ ค์ง€๋Š” ํ™”๋ฉด์€ fade out
  • ์ง„์ž…ํ•˜๋Š” ํ™”๋ฉด์€ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์Šฌ๋ผ์ด๋“œํ•˜๋ฉฐ ์ง„์ž…

 

2. ←ํ™”๋ฉด์ด ์‚ฌ๋ผ์ง€๊ณ  ์ด์ „ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐˆ ๋•Œ

  • ๋“ฑ์žฅํ•˜๋Š” ์ด์ „ ํ™”๋ฉด์€ fade in
  • ์‚ฌ๋ผ์ง€๋Š” ํ™”๋ฉด์€ ์™ผ์ชฝ์œผ๋กœ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์Šฌ๋ผ์ด๋“œํ•˜๋ฉฐ ์‚ฌ๋ผ์ง

 

3. X ํ™”๋ฉด์— ์ง„์ž…ํ•  ๋•Œ

  • ๊ฐ€๋ ค์ง€๋Š” ํ™”๋ฉด์€ fade out
  • ์ง„์ž…ํ•˜๋Š” ํ™”๋ฉด์€ ์•„๋ž˜์—์„œ ์œ„๋กœ ์Šฌ๋ผ์ด๋“œํ•˜๋ฉฐ ์ง„์ž…

 

4. X ํ™”๋ฉด์ด ์‚ฌ๋ผ์ง€๋กœ ์ด์ „ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐˆ ๋•Œ

  • ๋“ฑ์žฅํ•˜๋Š” ์ด์ „ ํ™”๋ฉด์€ fade in
  • ์ง„์ž…ํ•˜๋Š” ํ™”๋ฉด์€ ์œ„์—์„œ ์•„๋ž˜๋กœ ์Šฌ๋ผ์ด๋“œํ•˜๋ฉฐ ์‚ฌ๋ผ์ง

 

๊ณผ์ •

1) ๋””์ž์ด๋„ˆ๊ฐ€ ์›ํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ค์ • ๊ฐ’ ์ฐพ๊ธฐ

๋””์ž์ด๋„ˆ๋ฅผ ๋‚ด ์ž๋ฆฌ๋กœ ๋ถˆ๋Ÿฌ์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ค์ • ๊ฐ’๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์กฐ์ •ํ•ด ๊ฐ€๋ฉฐ ๊ฐ™์ด ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์„ ํ…Œ์ŠคํŠธํ•ด๋ดค๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ค์ • ๊ฐ’๋“ค์ด ์ •ํ•ด์กŒ๋‹ค.

 

์—ฌ๊ธฐ Animation attribute ๊ฐ’๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋„ˆ๋ฌด๋‚˜ ์ž˜ ์จ์ฃผ์‹  ๊ธ€์„ ๋ดค๋‹ค. 

https://seosh817.tistory.com/18

 

[Android] Animation ์ •๋ฆฌ

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ๋ณตํ•ฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์—ฐ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Translate ์• ๋‹ˆ๋ฉ”์ด์…˜ translate ์• ๋‹ˆ๋ฉ”์ด์…˜์€ X, Y์ถ•์œผ๋กœ ์ด๋™

seosh817.tistory.com

 

์˜ˆ์‹œ๋ฅผ ๋‚จ๊ธด๋‹ค.

์• ๋‹ˆ๋ฉ”์ด์…˜ xml ํŒŒ์ผ

์ ์šฉํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•˜๋‚˜์—, ๊ฐ€๋กœ(์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ)๋กœ ์ด๋™ํ•œ๋‹ค.

<?xml version="1.0" encoding="UTF-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:toXDelta="100%" 
    android:fromXDelta="0%" 
    android:duration="150" />

๋ช‡๋ช‡ ๋ธ”๋กœ๊ทธ ์˜ˆ์‹œ๋“ค์„ ๋ณด๋‹ˆ๊นŒ, ์ ์šฉํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•˜๋‚˜์ž„์—๋„ <set>์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค์ •ํ•˜๋Š” ์˜ˆ์‹œ๋“ค์ด ์žˆ์—ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋‹ˆ๊นŒ ์ ์šฉํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•˜๋‚˜์ด๋ฉด ๋”ฑํžˆ ์“ธ ํ•„์š”์—†๋‹ค. ์ฝ”๋“œ๋Š” ๊ฐ„๊ฒฐํ•œ ๊ฒŒ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ๋‚˜๋Š” ์ ์šฉํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•˜๋‚˜์ด๋ฉด <set>์„ ์“ฐ์ง€ ์•Š๋„๋ก ์ž‘์„ฑํ–ˆ๋‹ค.

 

์ ์šฉํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•˜๋‚˜์—, fade in ์ ์šฉ

<?xml version="1.0" encoding="UTF-8"?>
<alpha 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:toAlpha="1.0" 
    android:fromAlpha="0.9" 
    android:duration="300" />

 

์ ์šฉํ•  ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋‘ ๊ฐœ ์ด์ƒ. ๋‹จ์ˆœํžˆ fade out ํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด๋‹ค. ํ…Œ์ŠคํŠธํ•  ๋•Œ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ์ด๋Ÿฐ ํ™”๋ฉด ๊ณ ์ •์šฉ translate๋ฅผ ๋„ฃ์ง€ ์•Š์œผ๋ฉด fade outํ•  ํƒ€๊ฒŸ ํ™”๋ฉด์ด ์•„์˜ˆ ์‚ฌ๋ผ์ ธ ๋ฒ„๋ ค์„œ ์–ด์ฉ” ์ˆ˜ ์—†์ด ๋„ฃ์—ˆ๋‹ค.๐Ÿ˜ต๐Ÿ˜ข๐Ÿคฆ‍โ™€๏ธ ํ”„๋ž˜๊ทธ๋จผํŠธ fade out ์• ๋‹ˆ๋ฉ”์ด์…˜์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์–ต์ง€๋กœ ํ™”๋ฉด์„ ๊ณ ์ •์‹œํ‚ค๋Š” translate ์„ค์ •์ด ์—†์–ด๋„ fade out๋˜๋Š” ํƒ€๊ฒŸ ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์•„์„œ alpha๋งŒ ์‚ฌ์šฉํ–ˆ๋‹ค. 

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:toYDelta="0%" 
        android:toXDelta="0%" 
        android:fromYDelta="0%" 
        android:fromXDelta="0%" 
        android:duration="150"/>
    <alpha 
        android:duration="150" 
        android:toAlpha="0.8" 
        android:fromAlpha="1.0"/>
</set>

 

 

 

ํ™”๋ฉด ์ „ํ™˜์— ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Œ์„ ํŒŒ์•…ํ–ˆ๋‹ค.

1) ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜

2) ํ”„๋ž˜๊ทธ๋จผํŠธ์™€ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜

 

๋‘ ์ข…๋ฅ˜์˜ ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

 

2) ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜ ์ž‘์—…

์•ฑ์˜ ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์— ์“ฐ์ผ ๋ฉ”์„œ๋“œ๋Š” Activity์˜ overridePendingTransition() ์ด๋‹ค.

https://developer.android.com/reference/android/app/Activity#overridePendingTransition(int,%20int)

 

Activity  |  Android Developers

 

developer.android.com

 

์•ฑ์˜ ๋ชจ๋“  ์•กํ‹ฐ๋น„ํ‹ฐ๋“ค์€ base ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ƒ์†๋ฐ›๊ณ  ์žˆ๋‹ค. base ์•กํ‹ฐ๋น„ํ‹ฐ์— ๊ณตํ†ต ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด ์ˆ˜ํ›จํ•˜๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ์•˜๋‹ค.

 

ํ™”๋ฉด ์ „ํ™˜ ์Šฌ๋ผ์ด๋“œ ๋ชจ๋“œ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” enum class์— ๊ฐ€๋กœ ์Šฌ๋ผ์ด๋“œ, ์„ธ๋กœ ์Šฌ๋ผ์ด๋“œ  ๋‘ ์ข…๋ฅ˜๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ฐ ์ข…๋ฅ˜์— ํ•ด๋‹น ํ™”๋ฉด์ด ์ง„์ž…ํ•  ๋•Œ์˜ enter animation, exit animation, ํ•ด๋‹น ํ™”๋ฉด์ด ์‚ฌ๋ผ์งˆ ๋•Œ์˜ enter animation, exit animation xml ํŒŒ์ผ๋“ค์„ ์ง€์ •ํ•ด์คฌ๋‹ค. ์•กํ‹ฐ๋น„ํ‹ฐ์˜ onCreate()์— ์“ธ ํ™”๋ฉด ์ง„์ž…์šฉ animation๋“ค์„ ์‹คํ–‰ํ•  overridePendingTransition() ํ˜ธ์ถœ ํ•จ์ˆ˜์™€ ์•กํ‹ฐ๋น„ํ‹ฐ์˜ finish()์— ์“ธ ํ™”๋ฉด ์ œ๊ฑฐ์šฉ animation ์‹คํ–‰ overridePendingTrasition() ํ˜ธ์ถœ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค.

 

base ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ๊ธฐ๋ณธ ํ™”๋ฉด ์ „ํ™˜ ๋ชจ๋“œ๋Š” ๊ฐ€๋กœ ์Šฌ๋ผ์ด๋“œ์ด๋‹ค. ์„ธ๋กœ ์Šฌ๋ผ์ด๋“œ๊ฐ€ ํ•„์š”ํ•œ Activity๋“ค์€ ์ง์ ‘ ์„ธ๋กœ ์Šฌ๋ผ์ด๋“œ ๋ชจ๋“œ๋กœ ์˜ค๋ฒ„๋ผ์ด๋“œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค. ์„ธ๋กœ ์Šฌ๋ผ์ด๋“œ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์†์ˆ˜ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๊ธฐ๋Š” ํ•˜๋‹ค. ์ด๊ฒƒ๊นŒ์ง€ ์ž๋™์œผ๋กœ ํŒ๋‹จํ•˜๊ธฐ์—๋Š”, ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋„ˆ๋ฌด๋‚˜ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์†์„ ํƒ”๊ธฐ์— ํ™”๋ฉด์˜ ์ƒ๋‹จ ํˆด๋ฐ”๋“ค์€ ๊ฒ‰๋ณด๊ธฐ์— ๋˜‘๊ฐ™์•„ ๋ณด์—ฌ๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ๋‹ค. ๋ชจ๋“  ๊ตฌํ˜„ ์ผ€์ด์Šค๋“ค์„ ์ผ์ผํžˆ ํŒŒ์•…ํ•ด๊ฐ€๋ฉฐ ํƒ์ƒ‰ํ•˜๊ณ  ์Šฌ๋ผ์ด๋“œ ๋ชจ๋“œ๋ฅผ ํŒ๋‹จํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ด ๋–จ์–ด์ง€๊ณ  ๊ณต์ˆ˜ ๋‚ญ๋น„๋ผ๋Š” ํŒ๋‹จ์ด ๋“ค์—ˆ๋‹ค.

 

base ์•กํ‹ฐ๋น„ํ‹ฐ์˜ onCreate()์™€ finish()์— ์ƒ์„ฑํ•œ ์Šฌ๋ผ์ด๋“œ ๋ชจ๋“œ์˜ ์ฝ”๋“œ๋“ค์„ ์‚ฝ์ž…ํ–ˆ๋‹ค.

 

ํ…Œ์ŠคํŠธํ•ด๋ณด๋‹ˆ ์ž˜ ๋Œ์•„๊ฐ”๋‹ค. ์ž‘์—…์ด ์ •๋ง ์‰ฝ๊ฒŒ ๋๋‚ฌ๋‹ค.


๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๊ฒŒ base ์•กํ‹ฐ๋น„ํ‹ฐ์— ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•œ ๊ธ€์„ ์ฐพ์•˜๋‹ค.

https://greedy0110.tistory.com/52

 

[์žกํ•™] Activity ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ค์ •ํ•˜๊ธฐ, overridePendingTransition

๋ฌธ์ œ ์ƒํ™ฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ™”๋ฉด ์ „ํ™˜์€ ์—„์ฒญ ์ค‘์š”ํ•˜์ฃ . ์ด๋ ‡๊ฒŒ ์ค‘์š”ํ•œ ํ™”๋ฉด ์ „ํ™˜, ์ข€ ๋” ์ด์˜๊ณ  ์˜๋„์— ๋งž๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ• ์—†์„๊นŒ์š”?๐Ÿค” ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ BaseActivity ๊ตฌํ˜„์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„

greedy0110.tistory.com

 

3) ํ”„๋ž˜๊ทธ๋จผํŠธ์™€ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜

ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„ ํ™”๋ฉด ์ด๋™์„ ์•ฑ์—์„œ ์ฃผ๋กœ (์‚ฌ์‹ค ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„) Jetpack Navigation์œผ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค. ์ด์ œ๊ป navigation graph์—์„œ (๋””์ž์ด๋„ˆ์˜ ๊ฒ€์ˆ˜๋ฅผ ๋ฐ›์ง€ ์•˜์•˜๋˜) ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์„ ์ง€์ •ํ•ด์ฃผ๊ณ  ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์‰ฝ๊ฒŒ ๊ณตํ†ต์ฒ˜๋ฆฌํ•  ๋ฐฉ๋ฒ•์„ ๋ชป ์ฐพ์•˜๋‹ค. navigation graph์˜ ๋ชจ๋“  ํ™”๋ฉด ์ด๋™ ์•ก์…˜์„ ์ฐพ์•„ ์†์ˆ˜ ํ•˜๋‚˜์”ฉ ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์„ ๋„ฃ์–ด์คฌ๋‹ค. ๐Ÿ˜ต

navigation controller๋ฅผ ํ˜ธ์ถœํ•ด ํ™”๋ฉด ์ด๋™ํ•˜๋Š” ๋ฉ”์„œ๋“œ์— ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ง€์ •ํ•ด ๋„ฃ์–ด์ฃผ๋„๋ก ๊ณตํ†ต์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ์•˜์ง€๋งŒ, ์•ฑ ๋‚ด์˜ ๋ชจ๋“  navation controller ํ˜ธ์ถœ ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ์•„์„œ ๊ณตํ†ต์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ ์ˆ˜์ •ํ•ด์ค˜์•ผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ–ˆ๋‹ค. navigation graph์— ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์„ ๋„ฃ์–ด์ฃผ๋Š” ๋…ธ๋™์ด ๋” ๋‚˜์•„๋ณด์ด๊ณ  ์‰ฌ์›Œ๋ณด์˜€๋‹ค.๐Ÿฅบ

 

Navigation Graph์˜ Action์—์„œ Animation ์ง€์ •ํ•˜๊ธฐ

<action
    android:id="@+id/action_aFragment_to_bFragment"
    app:destination="@id/bFragment"
    app:enterAnim="@anim/slide_in_right"
    app:exitAnim="@anim/stay_fade_out_for_slide_horizontal"
    app:popEnterAnim="@anim/stay_fade_in_for_slide_horizontal"
    app:popExitAnim="@anim/slide_out_right" />

AFragment์—์„œ BFragment๋กœ ์ง„์ž…ํ•˜๊ณ , BFragment๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด AFragment๋‚˜ ๋‚˜์˜ค๋Š” ํ™”๋ฉด ์ด๋™์ด๋‹ค.

 

attribute ์„ค๋ช…

  • enterAnim : ์ง„์ž…ํ•˜๋Š” ํ™”๋ฉด์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜. BFragment๊ฐ€ ์ง„์ž…ํ•  ๋•Œ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜
  • exitAnim : ์ง„์ž…ํ•˜๋Š” ํ™”๋ฉด์— ๊ฐ€๋ ค์ง€๋Š” ํ™”๋ฉด์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜. BFragment๊ฐ€ ์ง„์ž…ํ•  ๋•Œ์˜ Afragment์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜
  • popEnterAnim : ์ด์ „ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐˆ ๋•Œ, ์œ„์— ๋…ธ์ถœ๋œ ํ™”๋ฉด์ด ์‚ฌ๋ผ์งˆ ๋•Œ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜. BFragment๊ฐ€ ์‚ฌ๋ผ์งˆ ๋•Œ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜
  • popExitAnim : ์ด์ „ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐˆ ๋•Œ ๋‚˜์˜ค๋Š” ์ด์ „ ํ™”๋ฉด์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜. AFragment๊ฐ€ ๋“ฑ์žฅํ•  ๋•Œ์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜

 

ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„ ํ™”๋ฉด ์ด๋™ ์• ๋‹ˆ๋ฉ”์ด์…˜๋„ ํ…Œ์ŠคํŠธํ•ด๋ณด๋‹ˆ ์ž˜ ๋™์ž‘ํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋‹ค๊ฐ€ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

 

4) ๋ฌธ์ œ ๋ฐœ์ƒ์„ ํ™•์ธ

4-1) ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ฆผ

์žฌํ˜„ ์ƒํ™ฉ

์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด ์ „ํ™˜์„ ์œ„ํ•ด ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด, ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„ ์ด๋™์€ ์ •๋ง ๋น ๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•ด ํ™”๋ฉด ์ „ํ™˜์ด ์ด๋ค„์ง€๋Š”๋ฐ ๋ฐ˜ํ•ด, ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ์ด๋™์€ ํ™”๋ฉด ์ „ํ™˜์ด ์ด๋ค„์ง€๋Š” ๋ฐ์— ์‹œ๊ฐ„์ด ๋ช‡ ์ดˆ ๊ฑธ๋ ธ๋‹ค. ๋””์ž์ด๋„ˆ๊ฐ€ ์ด ๋ถ€๋ถ„์„ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์—†๋ƒ๊ณ  ์งˆ๋ฌธํ–ˆ์—ˆ๋‹ค. 

 

์ด์Šˆ ๋ฐœ์ƒ ์›์ธ

์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•œ ํ…Œ์ŠคํŠธ ๋‹จ๋ง ์„ฑ๋Šฅ์ด ๋‚ฎ์•˜๋‹ค. ๋‚ด ๊ฐœ์ธํฐ์—์„œ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜์ด ์‹œ์ž‘ํ•˜๋Š” ์†๋„์™€ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜์ด ์‹œ์ž‘ํ•˜๋Š” ์†๋„๊ฐ€ ๋น„์Šทํ–ˆ๋‹ค. ๋‹จ๋ง์— ๋”ฐ๋ผ ์ด์Šˆ ๋ฐœ์ƒ ์—ฌ๋ถ€๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

 

์˜ˆ์ƒํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์†ŒํŠธํ”„์›จ์–ด๋กœ ๋ณด์•ˆํ•ด์•ผ ํ•œ๋‹ค๋ฉด...๐Ÿค” ์•กํ‹ฐ๋น„ํ‹ฐ ์ƒ์„ฑ ์‹œ (onCreate()์—์„œ) Main Thread์˜ ํ•  ์ผ์„ ์ค„์—ฌ์ฃผ๋ฉด ์ข€ ๋‚˜์•„์ง€์ง€ ์•Š์„๊นŒ ์ถ”์ธก๋งŒ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค. ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์—†์–ด๋„ ์กด์žฌํ•˜๋Š” ์ด์Šˆ์ด๊ณ , ๋ชจ๋“  ๋‹จ๋ง์— 100% ๋“ฑ์žฅํ•˜๋Š” ์ด์Šˆ๋„ ์•„๋‹ˆ๋ฉฐ, ํฌ๋ฆฌํ‹ฐ์ปฌํ•œ ์ด์Šˆ๊ฐ€ ์•„๋‹ˆ๊ณ , ๊ฐ ์•กํ‹ฐ๋น„ํ‹ฐ ํ™”๋ฉด๋“ค์„ ์ผ์ผํžˆ ํ™•์ธํ•˜๊ณ  ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ณต์ˆ˜๊ฐ€ ๋งŽ์€ ์ž‘์—…์ด๋ผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ํ™• ๋’ค๋กœ ๋ฐ€๋ ธ๋‹ค. ์‚ฌ์‹ค ์ด ์ด์Šˆ๋Š” ๋‹ค๋ฅธ ์ด์Šˆ๋กœ ์ธํ•ด ์žŠํ˜€์กŒ๋‹ค.

 

4-2) ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜, ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์ฐจ์ด๊ฐ€ ์žˆ์Œ

์žฌํ˜„ ์ด์Šˆ

์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ fade in, fade out๊ณผ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ fade in, fade out์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฑธ ํ™•์ธํ–ˆ๋‹ค. ๋ถ„๋ช… ๋‹ค๋ฅธ๋ฐ ๋ฌด์—‡์ด ๋‹ค๋ฅธ ๊ฑด์ง€ ๋ฐ”๋กœ ์•Œ ์ˆ˜๊ฐ€ ์—†์–ด์„œ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์•Œ๊ฒŒ ๋๋‹ค. 

 

์ด์Šˆ ๋ฐœ์ƒ ์›์ธ

์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ fade in, fade outํ•  ๋•Œ์˜ ๋ฐฐ๊ฒฝ์ƒ‰์€ ๊ฒ€์ •์ƒ‰์ธ๋ฐ, ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ fade in, fade out ํ•  ๋•Œ์˜ ๋ฐฐ๊ฒฝ์ƒ‰์€ ํฐ์ƒ‰์ด์—ˆ๋‹ค. ๊ฒ€์ •์ƒ‰ ๋ฐ”ํƒ•์—์„œ ํˆฌ๋ช…๋„๊ฐ€ ์กฐ์ ˆ๋˜๋Š” ๊ฒƒ๊ณผ ํฐ ์ƒ‰ ๋ฐ”ํƒ•์—์„œ ํˆฌ๋ช…๋„๊ฐ€ ์กฐ์ ˆ๋˜๋Š” ๊ฒƒ์€ ์ •๋ง ๋‹ค๋ฅธ ๊ฒƒ์ด์—ˆ๋‹ค.

 

๊ตฌ๊ธ€์˜ ๋Œ€์‘์„ ์ฐพ์Œ

๊ตฌ๊ธ€๋„ ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์•Œ์•˜๋Š”์ง€, Android 13๋ถ€ํ„ฐ ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๋ฐฐ๊ฒฝ์ƒ‰ ์ง€์ • ๊ธฐ๋Šฅ์ด ๋“ฑ์žฅํ–ˆ๋‹ค.

 

  • ์•กํ‹ฐ๋น„ํ‹ฐ ํ™”๋ฉด ์ „ํ™˜์šฉ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒ‰ ์ง€์ •
https://developer.android.com/reference/android/app/Activity#overridePendingTransition(int,%20int,%20int)
 

Activity  |  Android Developers

 

developer.android.com

 

  • xml ํŒŒ์ผ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒ‰ ์ง€์ •

๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด, ์•ฑ์—์„œ ์“ฐ๊ณ  ์žˆ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๋ทฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด๋‹ค. ๋ทฐ ์—๋‹ˆ๋ฉ”์ด์…˜ ์ค‘์—์„œ๋„ ํŠธ์œˆ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด๋‹ค.

 

์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฆฌ์†Œ์Šค  |  Android ๊ฐœ๋ฐœ์ž  |  Android Developers

์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฆฌ์†Œ์Šค ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฆฌ์†Œ์Šค๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†

developer.android.com

 

๋‚ด ๋ˆˆ์— ๋„์ธ ๊ฒƒ์€ ์ด๊ฒƒ์ด๋‹ค.

https://developer.android.com/guide/topics/resources/animation-resource?hl=ko#Tween

 

https://developer.android.com/guide/topics/resources/animation-resource?hl=ko#Tween

Animation ํด๋ž˜์Šค์— ๋ฐฐ๊ฒฝ์ƒ‰ ์ง€์ • ๋ฉ”์„œ๋“œ ๋ฐ attribute๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ดค๋‹ค.

์žˆ๋‹ค!

Animation์˜ android:backdropColor

https://developer.android.com/reference/android/view/animation/Animation?hl=ko#attr_android:backdropColor
 

Animation  |  Android Developers

 

developer.android.com

https://developer.android.com/reference/android/view/animation/Animation?hl=ko#attr_android:backdropColor

์š” related methods์˜ setBackropColor๋ฅผ ๋ณด๋ฉด

 

Animation  |  Android Developers

 

developer.android.com

https://developer.android.com/reference/android/view/animation/Animation?hl=ko#setBackdropColor(int)

Android 13๋ถ€ํ„ฐ ์ ์šฉ๋œ๋‹ค. 

 

๋””์ž์ด๋„ˆ์—๊ฒŒ ๊ถŒ์žฅํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

ํƒ€ํ˜‘์•ˆ๋“ค์„ ์ œ์‹œํ•  ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค.

1] Android 12 ์ดํ•˜ ๋‹จ๋ง๋“ค์˜ ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ fade in, fade out ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํ”„๋ ˆ๊ทธ๋จผํŠธ๊ฐ„ fade in, fade out ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ํ†ต์ผ์€ ํฌ๊ธฐํ•˜๊ณ , Android 13 ์ด์ƒ ๋‹จ๋ง๋ถ€ํ„ฐ ๋ฐฐ๊ฒฝ์ƒ‰์„ ์ง€์ •ํ•ด fade in, fade out ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํ†ต์ผํ•˜์ž

2] fade in, fade out ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์“ฐ์ง€ ๋ง์ž

 

4-3) ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ„ ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์— ์˜ํ–ฅ์„ ์คŒ

์žฌํ˜„ ์ƒํ™ฉ

์„œ๋น„์Šค ์ƒ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์† ๊ฐฑ์‹ ํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋ž˜๊ทธ๋จผํŠธ ํ™”๋ฉด๋“ค์ด ๋‹ค๋ฅธ ํ™”๋ฉด์— ๊ฐ”๋‹ค๊ฐ€ ๋Œ์•„์™€์„œ ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ ์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ™”๋ฉด๋“ค์ด ์žˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•˜๊ณ  ๋‚˜์„œ ์ด๋Ÿฐ ์ตœ์‹  ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ ์ด ์ œ๋Œ€๋กœ ์ด๋ค„์ง€๊ณ  ์žˆ์ง€ ์•Š์Œ์„ ์•Œ์•˜๋‹ค. ์ด๊ฑด ์ง„์งœ ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ด์Šˆ๋ผ์„œ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋‹ค. 

 

์ด์Šˆ ๋ฐœ์ƒ ์›์ธ

์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉ ์ „์—๋Š”, ํ•ด๋‹น ํ”„๋ž˜๊ทธ๋จผํŠธ ์œ„๋กœ ๋‹ค๋ฅธ ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์˜ฌ๋ผ์™€ ๋ฐฑ์Šคํƒ์œผ๋กœ ๋น ์ง€๋ฉด, ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ view๊ฐ€ destroyed ๋๋‹ค. onViewDestroyed()๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์œ„์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋˜ ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด์„œ ๋‹ค์‹œ ๋…ธ์ถœ๋œ ํ”„๋ž˜๊ทธ๋จผํŠธ๋Š” view๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•œ๋‹ค. onViewCreated()๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ , ๋ฐ์ดํ„ฐ ๊ฐฑ์‹  ์ฝ”๋“œ๋Š” ์ด onViewCreated() ์•ˆ์— ์žˆ๋‹ค. 

์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•˜๊ณ  ๋‚˜์„œ๋Š” ํ•ด๋‹น ํ”„๋ž˜๊ทธ๋จผํŠธ ์œ„๋กœ ๋‹ค๋ฅธ ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์˜ฌ๋ผ์™€๋„ ํ”„๋ž˜๊ทธ๋จผํŠธ์ด view๊ฐ€ destroyed ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. onViewDestroyed()๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š์•˜๋‹ค. ์œ„์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋˜ ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด์„œ ํ”„๋ž˜๊ทธ๋จผํŠธ๋Š” ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋˜์—ˆ๋‹ค. view๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋‹ˆ onViewCreated()๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š์•˜๊ณ  ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ ๋„ ์ด๋ค„์ง€์ง€ ์•Š์€ ๊ฒƒ์ด์—ˆ๋‹ค.

์ด์ œ๋Š”, ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์–ด๋Š ์„ค์ •๊ฐ’์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด ์›๋ž˜ ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ lifecycle์— ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€ ํ…Œ์ŠคํŠธ์‚ฝ์งˆ์„ ํ•˜๋ฉฐ ์ฐพ์•„๋‚ผ ์ฐจ๋ก€์˜€๋‹ค. ์—ฌ๋Ÿฌ ์‹œ๋„ ๋์— ์ฐพ์•„๋ƒˆ๋‹ค.

ํ™”๋ฉด ์ „ํ™˜์ด ๋ฐœ์ƒํ•  ๋•Œ, ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•˜๋‚˜๋งŒ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ง„์ž…ํ•˜๋Š” ํ™”๋ฉด์€ ์ง„์ž…ํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋™์ž‘ํ•˜๊ณ , ์‚ฌ๋ผ์ง€๋Š” ํ™”๋ฉด๋“ค์€ ๊ทธ์— ๋งž๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋™์ž‘ํ•œ๋‹ค. ๋‘ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ duration ์‹œ๊ฐ„ ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด(๋””์ž์ด๋„ˆ์™€ ๊ฐ™์ด ์„ค์ •ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๊ฐ€๋ ค์ง€๋Š” ๊ฐ€๋ ค์ง€๋Š” ํ™”๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ duration์ด ๋…ธ์ถœ๋˜๋Š” ํ™”๋ฉด์˜ duration๋ณด๋‹ค ๊ธธ์—ˆ๋‹ค) ๊ฐ€๋ ค์ง€๋Š” ํ”„๋ž˜๊ทธ๋จผํŠธ ํ™”๋ฉด์˜ lifecycle์ด ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๋””์ž์ด๋„ˆ์—๊ฒŒ ์ด ๋ฌธ์ œ๋ฅผ ๊ณต์œ ํ•ด ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜๋“ค์˜ duration ๊ฐ’๋“ค์„ ํ†ต์ผํ–ˆ๋‹ค.

 

5) ๋””์ž์ด๋„ˆ๊ฐ€ interpolator ์‚ฝ์ž…์„ ์›ํ•จ

๋””์ž์ด๋„ˆ๊ฐ€ ์• ๋‹ˆ๋ฉ”์ด์…˜์— interpolator ์‚ฝ์ž…์„ ์›ํ–ˆ๋‹ค. 

 

์š” ํฌ์ŠคํŠธ์—์„œ ์—ฌ๋Ÿฌ interpolator๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

https://gus0000123.medium.com/android-animation-interpolar-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-8d228f4fc3c3

 

Android Animation Interpolator ๊ตฌํ˜„ํ•˜๊ธฐ

Interpolator๋Š” ํ•œ๊ตญ์–ด๋กœ ๋ณด๊ฐ„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ฐ„์€ ๋‘ ์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ฉฐ ์–ด๋–ป๊ฒŒ ๊ถค์ ์„ ํ˜•์„ฑํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

gus0000123.medium.com

 

๋””ํดํŠธ interpolator ์‚ฝ์ž…

https://developer.android.com/guide/topics/resources/animation-resource#Interpolators
 

์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฆฌ์†Œ์Šค  |  Android ๊ฐœ๋ฐœ์ž  |  Android Developers

์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฆฌ์†Œ์Šค ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฆฌ์†Œ์Šค๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†

developer.android.com

์•ˆ๋“œ๋กœ์ด๋“œ ๋””๋ฒจ๋กœํผ์Šค ๊ณต์‹ ๋ฌธ์„œ์— ๋””ํดํŠธ interpolator๋“ค์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด๋†“์•˜๋‹ค.

๋””ํดํŠธ interpolator ์‚ฝ์ž… ์ฝ”๋“œ ์ž์ฒด๋Š” ๊ฐ„๋‹จํ–ˆ๋‹ค.

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:fromYDelta="100%"
    android:toXDelta="0%" />

interpolator ๋ผ๋Š” attribute๋ฅผ ์“ฐ๋ฉด๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ ์–ด๋–ค ๋””ํดํŠธ interpolator๋ฅผ ๋„ฃ๋”๋ผ๋„ ์œก์•ˆ์œผ๋กœ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค. ๋‚˜๋ž‘ ๋””์ž์ด๋„ˆ ๋‘˜ ๋‹ค ์ด๊ฒŒ interpolator๊ฐ€ ์ ์šฉ๋œ ๊ฒŒ ๋งž๋Š”์ง€ ๊ณ„์† ๊ฐธ์šฐ๋šฑ๊ฑฐ๋ฆฌ๋ฉฐ ํ…Œ์ŠคํŠธํ–ˆ์—ˆ๋‹ค.๐Ÿคท‍โ™€๏ธ๐Ÿคท‍โ™‚๏ธ

 

์ปค์Šคํ…€ interpolator ์‚ฝ์ž…

๋””ํดํŠธ interpolator๋กœ๋Š” ๋ณ€ํ™”๋ฅผ ๋Š๋‚„ ์ˆ˜๊ฐ€ ์—†์–ด์„œ, ๋‚ด๊ฐ€ interpolator attribute๋ฅผ ์ œ๋Œ€๋กœ ์“ด ๊ฒŒ ๋งž๋‚˜ ํ•˜๋Š” ์˜์‹ฌ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ปค์Šคํ…€ interpolator๋ฅผ ์ž‘์„ฑํ•ด ์‚ฌ์šฉํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

https://developer.android.com/guide/topics/resources/animation-resource#custom-interpolators
 

์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฆฌ์†Œ์Šค  |  Android ๊ฐœ๋ฐœ์ž  |  Android Developers

์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฆฌ์†Œ์Šค ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฆฌ์†Œ์Šค๋Š” ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†

developer.android.com

์ปค์Šคํ…€ interpolator์— ๋Œ€ํ•œ ์„ค๋ช…๋„ ๊ณต์‹ ๋ฌธ์„œ์— ์ž˜ ๋‚˜์™€์žˆ๋‹ค.

๋‚ด๊ฐ€ ์ง  ์—„์ฒญ ๊ฐ„๋‹จํ•œ custom accelerate interpolator.

<?xml version="1.0" encoding="utf-8"?>
<accelerateInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:factor="2"/>

์ ์šฉํ•ด ๋ณด๋‹ˆ ๊ฒฐ๊ณผ๋Š” ์„ฑ๊ณต์ ์ด์—ˆ๋‹ค. ๋ณ€ํ™”๊ฐ€ ์œก์•ˆ์œผ๋กœ ๋ณด์˜€๋‹ค. ๋‚ด๊ฐ€ interpolator attribute๋ฅผ ์ž˜ ์“ฐ๊ณ  ์žˆ๋˜๊ฒŒ ๋งž์•˜๋‹ค๋Š” ๊ฒƒ์„ ์š” ์ปค์Šคํ…€ interpolator ๋•๋ถ„์— ํ™•์ธํ–ˆ๋‹ค. ์ปค์Šคํ…€ interpolator๋กœ ๋””์ž์ด๋„ˆ๊ฐ€ ์›ํ•˜๋Š” ์„ค์ •์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ „ํ–ˆ์„ ๋•Œ ๋””์ž์ด๋„ˆ๊ฐ€ ์ข‹์•„ํ–ˆ๋‹ค. ๋ฌผ๋ก , ์ œํ•œ์ด ์žˆ๊ธฐ๋Š” ํ–ˆ๋‹ค.

https://developer.android.com/guide/topics/resources/animation-resource#custom-interpolators

๋””์ž์ด๋„ˆ๊ฐ€ ์ •๋ง ์†๋ณด๊ณ  ์‹ถ์–ด ํ–ˆ๋˜ interpolator๊ฐ€ accelerateDecelerateInterpolator ์˜€๋Š”๋ฐ, ์ด ์นœ๊ตฌ๋Š” ๊ฑด๋“ค ์ˆ˜ ์žˆ๋Š” attribute๊ฐ€ ์—†๋‹ค. ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ anim xml ํŒŒ์ผ๋กœ custom interpolator๋ฅผ ๋งŒ๋“ค๋ผ๋Š” ๊ฒƒ์ธ๊ฐ€? ๋””์ž์ด๋„ˆ์—๊ฒŒ ์ด ์นœ๊ตฌ์˜ ์ปค์Šคํ…€ ๋ฒ„์ „์€ ๋‚ด๊ฐ€ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค๋Š” ์Šฌํ”ˆ ์†Œ์‹๋„ ์ „ํ–ˆ๋‹ค.

 

๊ฒฐ๊ณผ

์ด๋Ÿฐ ์—ฌ์ •์„ ๊ฑฐ์น˜๋ฉฐ ์™”๋‹ค. ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉ์˜ ๋งˆ๋ฌด๋ฆฌ ๋‹จ๊ณ„์— ๊ฑฐ์˜ ๋‹ค๋‹ค๋ž๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๊ฒฐ๊ตญ์—๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉ์„ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์ •์ด ๋‚ฌ๋‹ค. ์ด๋Ÿฐ ๊ฒฐ์ •์ด ๋‚œ ๊ฒƒ์ด ๊ธฐ์ˆ ์ ์ธ ์ด์Šˆ ๋•Œ๋ฌธ(๋‚˜ ๋•Œ๋ฌธ)์€ ์•„๋‹ˆ์—ˆ๋‹ค. ๋””์ž์ด๋„ˆ๋Š” ๊ทธ๋™์•ˆ ๊ฐ™์ด ๋จธ๋ฆฌ ์‹ธ๋งจ ์‹œ๊ฐ„๋“ค์„ ์•„์‰ฌ์›Œํ•˜๊ธฐ๋Š” ํ–ˆ๋Š”๋ฐ, ์–ด์ฉ” ์ˆ˜ ์žˆ๋‚˜. ๋‚œ ๊ณต๋ถ€ํ•˜๋Š” ๊ณผ์ •์ด์—ˆ์œผ๋‹ˆ ๋‚˜์˜์ง€๋Š” ์•Š์•˜๋‹ค ๐Ÿ™ƒ