-
[Android] 안드로이드 애니메이션(Animation) Interpolator 알아보기안드로이드 스튜디오 2022. 9. 18. 13:10
1. Interpolaor 개요
Interpolator는 애니메이션 효과에 덧붙이는 부가 효과입니다.
2. Interpolator 종류
1) AccelerateInterpolator: 시작은 느리게, 그 뒤 빠르게
2) DecelerateInterpolator: 시작은 빠르게, 그 뒤 느리게
3) AccelerateDecelerateInterpolator: 시작과 끝은 느리게, 중간은 빠르게
4) AnticipateInterpolator: 시작 지점보다 이전 지점으로 갔다가 앞으로 튀어나감
5) OvershootInterpolator: 종료 지점보다 더 뒤까지 튀어나갔다가 다시 종료 지점으로
6) AnticipateOvershootInterpolator:
anticipate + overshoot7) BounceInterpolator: 종료 지점에서 통통 튐
8) CycleInterpolator: 특정 횟수만큼 반복
9) LinearInterpolator: default
10) PathInterpolator: 개발자가 커스터마이징한 길을 따라 진행(역주행, 순간이동 가능)
3. PathInterpolator 구현(Java)
MainActivity.java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageButton imgBtn = findViewById(R.id.imgBtn); final Animation rotate = AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate); Path path = new Path(); path.lineTo(0.25f, 0.25f); path.moveTo(0.25f, 0.5f); path.lineTo(0.5f, 0.1f); path.lineTo(1f, 1f); PathInterpolator interpolator = new PathInterpolator(path); rotate.setInterpolator(interpolator); imgBtn.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { v.startAnimation(rotate); } }); } }
Path함수에서 x값은 시간, y값은 지점이라고 생각하시면 됩니다.
(0,0)에서 시작해 (1,1) 사이에서 설정해줍니다.
y값 음수는 역방향입니다.
예를 들어 path.lineTo(0.25f, 0.5f)는 함수는 시간이 1/4만큼 경과했을 때 50% 지점까지 순방향 진행한다는 뜻입니다.
path.moveTo는 진행 지점을 순간이동 시켜줍니다.rotate.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000"> <rotate android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360" /> </set>
위에서 사용한 애니메이션 정보입니다.
2초 동안 0도에서 360도까지 회전합니다.개발자 문서:
https://developer.android.com/reference/android/view/animation/BaseInterpolator
'안드로이드 스튜디오' 카테고리의 다른 글
[Android] 안드로이드 DatePicker 알아보기 (0) 2022.09.18 [Android] 안드로이드 애니메이션(Animation) 구현 (4) - Alpha (투명도) (0) 2022.09.17 [Android] 안드로이드 Animation 구현 (3) - Scale (크기 변경) (0) 2022.09.17 [Android] 안드로이드 애니메이션(Animation) 구현 (2) -Translate(좌표 이동) (0) 2022.09.17 [Android] 안드로이드 애니메이션(Animation) 구현 (1) - Rotate (0) 2022.09.16 댓글