잡다로그

애니메이션 - 둘째 마당 8장 chapter01 본문

App/Android

애니메이션 - 둘째 마당 8장 chapter01

날으는다람쥐 2021. 2. 22. 15:22

공부 중 기억해야 할 부분을 기록하기 위한 글입니다. 자세한 내용은 직접 책을 보시거나 강의를 들으시길 추천합니다 :) 

Do it! 안드로이드 앱 프로그래밍
국내도서
저자 : 정재곤
출판 : 이지스퍼블리싱 2020.01.23
상세보기

08-1 애니메이션 사용하기

트윈 애니메이션(Tweened Animation): 이동, 확대, 축소, 회전과 같이 일정한 패턴으로 움직이는 애니메이션을 구현할 때 사용된다.

 

1. 애니메이션이 어떻게 동작하는지를 XML로 정의한다. 

애니메이션 액션 정보는 /app/res 폴더 안에 있어야 인식된다. 

// 대상을 두 배로 확대하는 스케일 액션. scale.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:duration="2500"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="2.0"
        android:toYScale="2.0"
        />
</set>

 

두 개의 애니메이션이 연속으로 수행되도록 하나로 묶어두는 방법

<set> 태그를 사용해 여러 애니메이션 액션을 포함시킨다. 

//scale2.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:duration="2500"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="2.0"
        android:toYScale="2.0"
        />

    <scale
        android:startOffset="2500"
        android:duration="2500"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="0.5"
        android:toYScale="0.5"
        />
</set>

2. XML을 로딩하여 애니메이션 객체로 만듦 - XML 정보는 자바 소스에서 애니메이션 객체로 로딩한 후 뷰 객체의 startAnimation() 메서드를 사용해서 애니메이션을 동작하게 한다.

 

3. 뷰에 애니메이션을 적용하여 동작시킴

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Animation anim = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.scale);
                v.startAnimation(anim);
            }
        });
    }
}
Comments