본문 바로가기
Android 개발/android :: Tip

[안드로이드 Animation] 애니메이션 딜레이 - 시간 지연 설정하기 (시작 delay 설정)

by 독학하는 1인 개발자 2020. 5. 22.

Android 개발 Tip.

 

- Animation Time Delay

 

애니메이션 지연 실행 방법

 

애니메이션을 시간차 실행하기

 

시간 지연 설정 및 순차적 시작

 

 

 

 

 

 

-> 애니메이션에 시작 지연을 주고 싶거나

 

-> 여러 개의 애니메이션을 순차적으로 시작되게 하고 싶을 때가 있다.

 

 

방법은 간단하다

 

startOffset 을 쓰면 된다.

 

 

 

1. 시작 지연 설정하는 법

 

andoird:startOffset 속성을 추가한다.

 

0.5초 지연을 주고 투명도 (alpha) 애니메이션 실행

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android">
    android:duration="1000"
    android:startOffset="500"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />
</alpha>
cs

 

startOffset : 지연 시간 설정 (500 = 0.5초 지연)

 

 

 

 

2. 여러 애니메이션을 순차적으로 실행하는 법

 

버튼 3개가 하나씩 순차적으로 나타나는 애니메이션을 가정하자.

 

 

러면

 

- alpha 애니메이션 파일을 3개 만들어서

 

- 각각 지연시간을 다르게 주고

 

- 각각 startAnimation()을 주면 된다.

 

 

alpha1.xml -> 0.5초 후 시작

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android">
    android:duration="1000"
    android:startOffset="500"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />
</alpha>
cs

 

alpha2.xml -> 1초 후 시작 ( = alpha1이 시작하고 0.5초 후 시작)

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android">
    android:duration="1000"
    android:startOffset="1000"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />
</alpha>
cs

 

alpha3.xml -> 1.5초 후 시작 ( = alpha2가 시작하고 0.5초 후 시작)

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android">
    android:duration="1000"
    android:startOffset="1500"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />
</alpha>
cs

 

 

MainActivity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 1. 변수 선언
Animation anim_alpha1, anim_alpha2, anim_alpha3;
Button btn1, btn2, btn3;
 
// 2. 리소스 할당
anim_alpha1 = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.alpha1);
anim_alpha2 = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.alpha2);
anim_alpha3 = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.alpha3);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
btn3 = findViewById(R.id.btn3);
 
// 3. 버튼 누르면 애니메이션 실행
btn1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        btn1.startAnimation(anim_alpha1);
        btn1.startAnimation(anim_alpha2);
        btn1.startAnimation(anim_alpha3);
    }
});
cs

 

 

 

이렇게 하나하나 안 하고 초간단하게 구현하는 방법은 없을까?

 

 

구글링을 나름 꽤 많이 해봤는데

 

간단하게 구현하는 방법은 없었다.

 

내가 검색 능력이 부족한건지 진짜 없는건지

 

stackoverflow를 뒤져봐도 한 번에 간단히 처리하는 방법은 없었다...

 

있으면 누가 알려주세요...

 

 

 

 

댓글