안드로이드 애니메이션(Animation)효과 주기 트윈애니메이션(TweenAnimation) :: 게임제작[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

게임제작
[1]
등록일:2018-10-15 16:29:41 (0%)
작성자:
제목:안드로이드 애니메이션(Animation)효과 주기 트윈애니메이션(TweenAnimation)

오늘은 트윈애니메이션(TweenAnimation)을 사용해 보도록 하겠습니다.


* 트윈애니메이션 : 위치나 크기, 회전을 지정한 시간내에 수행하는 애니메이션


아래 5가지 애니메이션을 알아봅시다.


1. 회전 (rotate) : 중심점(pivot)을 기준으로 회전하는 애니메이션

2. 크기 (scale) : 중심점(pivot)을 기준으로 크기가 커지거나 줄어드는 애니메이션

3. 투명도 (alpha) : View가 흐려지거나 다시 진해지는 애니메이션

4. 이동 (translate) : View가 상,하,좌,우로 이동하는 애니메이션

5. 복합 애니메이션 (set) : 여러 애니메이션을 중첩하는 애니메이션



1. 애니메이션 효과 파일을 보관할 폴더 만들기

res 폴더안에 애니메이션 XML파일을 저장할 폴더를 만들어 줍시다. 폴더 이름은 반드시 anim 혹은 animation으로 만들어주어야합니다


2. 애니메이션 효과 파일 만들기

방금만든 폴더를 우클릭하고 new - animation resource file 로 애니메이션 xml파일을 생성합니다.


* rotate.xml (회전)

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
    android:interpolator="@android:anim/linear_interpolator"
    android:repeatCount="infinite"
    android:duration="4000"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromDegrees="0"
    android:toDegrees="360">
</rotate>
cs


<속성>

- interpolator : 애니메이션의 이동 속도? 패턴? 같은것을 바꾸어줍니다.

   등속이동을 하고자한다면 linear_interpolator를 사용하시면 됩니다.


 linear_interpolator


 

 애니메이션 변화 속도가 일정합니다.

 accelerate_interpolator

 

 애니메이션이 처음에 느리다가 빨라집니다.

 decelerate_interpolator

 

 애니메이션이 처음에 빠르다가 점점느려집니다.

 accelerate_decelerate_interpolator

 

 애니메이션이 과속했다가 급정거합니다

 overshoot_interpolator

 

 애니메이션이 마지막 부분에서 약간더 진행합니다.

 bounce_interpolator

  

 애니메이션이 마지막 부분에서 통통 튀깁니다.

 cycle_interpolator

 

 애니메이션이 마지막까지 갔다가 다시 처음으로 돌아옵니다.


repeatCount : 추가 반복 횟수를 넣어주시면 됩니다. defualt는 0입니다. 끈임없이 동작 시키고자 한다면 " infinite "

- duration : 동작시간입니다 1000이면 1초고 4000이면 4초 동안 동작합니다.

- pivotX,Y : 기준점을 정해줍니다. default는 아래 사진처럼 view의 좌측상단 끝부분입니다.

       X,Ypivot(기준점)을 50%로 설정해주어야 기준점이 view의 중앙으로 이동합니다.

       rotation 애니메이션에서는 피벗을 설정해주는게 좋겠죠? 이미지 중앙을 기준으로 회전하는것이 자연스러우니까요~



* 기준점 위치

​- pivot x,y 0% (default)                        - ​pivot x,y 50%                               - pivot x,y 100%

               

- from ,to ~~ : from 부터, to 까지 , 여기서는 0도에서 부터 360도 까지 시계방향으로 회전합니다.

                      반시계방향은 from을 360하고 to를 0으로 주면 되겠지요?


 

* scale.xml (크기)


1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
    android:duration="4000"
    android:fromXScale="0.0"
    android:fromYScale="0.0"
    android:toXScale="2.0"
    android:toYScale="2.0"
    android:pivotX="50%"
    android:pivotY="50%"
    >
</scale>
cs

: 처음에 안보이다가 점점 켜저서 2배크기 만큼 커집니다.



* alpha.xml (투명도)


1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
    android:duration="3000"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" />
cs

: 처음에 안보이다가 점점 보여짐



- translate.xml (이동)


1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="3000"
        android:fromXDelta="-100%"
        android:toXDelta="0">
</translate>
 
cs

: 위에서 설명한 기본 좌표의 기준점이 어디였는지를 상기시키면서 보면 참 쉬운코드이죠?

  좌측에 숨어있다가 나타나는 애니메이션~


* wave.xml (복합 애니메이션)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:duration="2000" />
    <scale
        android:fromXScale="0.5" android:toXScale="1.5"
        android:fromYScale="0.5" android:toYScale="1.5"
        android:pivotX="50%" android:pivotY="50%"
        android:duration="2000" />
    <scale 
        android:fromXScale="1.5" android:toXScale="1.0"
        android:fromYScale="1.5" android:toYScale="1.0"
        android:pivotX="50%" android:pivotY="50%"
        android:startOffset="2000"
        android:duration="2000" />
</set>
 
cs

: 복합애니메이션은 <set> 태그 안에 지금까지 만들어보았던 애니메이션 태그들을 넣어주면됩니다~

  이전 애니메이션이 끝날동안 delay를 주는 startOffest속성에 값을 주어 연달아 다음 애니메이션을 시작하는 효과를 줄수 있습니다!

  이 애니메이션은 안보이다가 점점 나타나면서 동시에 커지면서 다시 작아짐. << 말이 이상하네요 ㅎㅎ 그냥 실행시켜보세요 ~
 

* 애니메이션이 끝나고 종료된 상태를 유지하고 싶다면? 아래 속성을 추가합니다

- android:fillAfter="true"  // 애니메이션이 끝나도 상태가 유지됨.
디폴트 속성은 android:fillAfter="false"  // 애니메이션이 끝나면 시작전 상태로 되돌아옴 



6. 적용

- java

모든 view에는 setAnimation

1
2
Animation animation = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.rotate);
view.startAnimation(animation);
cs



다음 포스팅에서는 FrameAnimation을 알아봅시다~

[본문링크] 안드로이드 애니메이션(Animation)효과 주기 트윈애니메이션(TweenAnimation)
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34857
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.