티스토리 뷰
반응형
프로젝트를 진행하다보니 가끔 뷰에 애니메이션을 적용하는 것이 필요했다.
복잡한 애니메이션은 잘 적용할 일이 없지만, 회전, 이동 등의 간단한 애니메이션은 생각보다 꽤나 자주 쓰이게 된다.
최근 내가 적용한 애니메이션은 Rotate Animation이다.
주로 로딩 프로그래스를 이미지로 만들때 사용하곤 한다.
그럼 시간이 없으니 바로 본론으로 들어가 보자.
반응형
1. 일회성 애니메이션
view.animate().apply {
duration = 100
rotation(180f)
}
180도 회전하는 방법이다.
원래대로 돌리려면 rotation에 0을 넣어주면 된다.
view.animate().apply {
duration = 100
rotation(0f)
}
2. 무한 회전(무한 프로그래스)
무한으로 회전하는 방법도 간단하다.
RotateAnimation 클래스를 사용하면 된다.
view.apply {
val rotate = RotateAnimation(
0f, 360f, // 0 ~ 360 도 까지 회전
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f
)
rotate.duration = 1000 // 시간에 따라 속도가 조절됨
rotate.repeatCount = Animation.INFINITE
rotate.interpolator = LinearInterpolator()
startAnimation(rotate)
}
회전할 범위를 지정 후 회전의 중심점을 잡아주기위해 x, y 값을 0.5로 설정한다.
회전 시간에 따라 회전하는 속도가 달라진다.
repeatCount를 무한으로 설정해줘야 뷰가 사라질때까지 회전한다.
interpolator는 Linear로 설정하면 일정한 속도로 회전하게 된다.
다른 interpolator도 많으니 다양하게 적용해 볼 수 있다.
3. 재실행하기
재실행은 repeatCount 만 아래와 같이 변경해주면 된다.
나는 뷰를 클릭할 때마다 애니메이션이 재실행되도록 했다.
view.setOnClickListener {
val rotate = RotateAnimation(
0f, 360f, // 0 ~ 360 도 까지 회전
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f
)
rotate.duration = 1000 // 시간에 따라 속도가 조절됨
rotate.repeatCount = Animation.RESTART
rotate.interpolator = LinearInterpolator()
startAnimation(rotate)
}
※ 주의할 점
아래와 같이 애니메이션을 적용하면 뷰를 클릭 시 1회만 적용된다.
이런 경우에는 애니메이션이 종료되었을 때, 원래 위치로 돌아가도록 적용해주어야 한다.
오히려 더 귀찮아질 수 있으니 위의 코드를 사용하자...!
view.setOnClickListener {
it.animate().apply {
duration = 1000
rotation(360f)
}
}
반응형
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] MediaPlayer로 음원(MP3 파일) 재생하기 (0) | 2023.07.26 |
---|---|
[Android] StartActivity 애니메이션 없이 실행하기 (0) | 2023.05.30 |
[Kotlin] AlertDialog 사용하기 (0) | 2023.04.22 |
[Kotlin] 앱 실행 상태 체크하기(백그라운드 상태 체크) (0) | 2023.03.30 |
[Kotlin] ViewPager2 사용법 (0) | 2020.08.18 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- .toml
- Swift
- Xcode
- 함수
- 버전카타로그
- toml
- NoAnimation
- 격파르타 후기
- Kotlin
- rotate
- Android
- 스위프트
- dart
- rotation
- 아이폰
- sqld 자격증 합격
- 격파르타 합격후기
- 음성재생
- IOS
- 아이폰앱개발
- gem update
- 코틀린
- ~=
- 자바
- 연산자
- 변수
- 안드로이드
- Java
- FLUTTER
- 격파르타 장점
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함