728x90
반응형
<결과 화면>
리사이클러 뷰의 아이템들이 로딩될 때마다 점점 커지는 애니메이션을 만들어보려고 한다.
애니메이션에 대한 코드는 res/anim 디렉토리에 xml파일로 만들면 된다.
만약 anim 디렉토리가 없다면 새로 만들어준다.
<res/anim/rec_animation.xml>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:pivotX="50%"
android:pivotY="50%"
android:fromXScale="0"
android:fromYScale="0"
android:toXScale="1"
android:toYScale="1"
android:duration="500" />
</set>
애니메이션 파일을 만들었으면 리사이클러 뷰를 만들 차례인데 아래 포스팅을 참고하면 도움이 될 것 같다.
https://growth-coder.tistory.com/31
이 때는 User 객체의 배열을 만들어서 리사이클러 뷰를 만들었는데 이번 포스팅에서는 그냥 String의 배열로 리사이클러 뷰를 만들어보려 한다.
애니메이션 파일을 적용시키는 곳은 리사이클러뷰 어댑터의 onBindViewHolder 메소드이므로 이 메소드만 살짝 바꾸면 된다.
애니메이션을 적용시키지 않았다면 onBindViewHolder 메소드는 아래와 같을 것이다.
override fun onBindViewHolder(holder: Holder, position: Int) {
holder.bind(datas[position])
}
위에서 만들었던 rec_animation.xml 파일을 불러와야 한다.
val animation = AnimationUtils.loadAnimation(holder.binding.root.context,R.anim.rec_animation)
AnimationUtils.loadAnimation 의 첫 번째 인자로 context, 두 번째 인자로 만들었던 애니메이션을 넣어준다.
holder.binding.root.animation = animation
그리고 적용시키면 된다.
<RecAdapter.kt 전체 코드>
class RecAdapter(val datas : Array<String>)
: RecyclerView.Adapter<RecAdapter.Holder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
val binding = RecAnimationBinding.inflate(LayoutInflater.from(parent.context))
return Holder(binding)
}
override fun onBindViewHolder(holder: Holder, position: Int) {
val animation = AnimationUtils.loadAnimation(holder.binding.root.context,R.anim.rec_animation)
holder.binding.root.animation = animation
holder.bind(datas[position])
}
override fun getItemCount() = datas.size
class Holder(val binding: RecAnimationBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(data: String) {
binding.txtName.text = data
}
}
}
728x90
반응형
'공부 > Android Studio' 카테고리의 다른 글
[Android/Kotlin] AlarmManager 사용법 (2) | 2023.01.05 |
---|---|
[Android/Kotlin] Work Manager 사용법 (0) | 2023.01.04 |
[Android/Kotlin] Foreground Service 사용 방법 (0) | 2022.12.24 |
[Android/Kotlin] MVVM Repository 패턴을 활용하여 데이터베이스의 유저 정보 등록 및 출력 (0) | 2022.12.23 |
[Android Studio] Firebase와 연결하기 (0) | 2022.12.13 |
댓글