RecyclerView 사용시 수정된 데이터를 다시 뿌려주기 위해서
notifyDataSetChanged()를 사용해 화면을 다시 갱신을 시킬 경우가 많다.
화면을 갱신시키는데 깜빡임 현상 때문에 고정되어있는 데이터들도 깜빡거려 안 좋게 보일 수가 있다.
Kotlin
val animator = recyclerHome?.itemAnimator //리사이클러뷰 애니메이터 get
if (animator is SimpleItemAnimator){ //아이템 애니메이커 기본 하위클래스
animator.supportsChangeAnimaions = false //애니메이션 값 false (리사이클러뷰가 화면을 다시 갱신 했을때 뷰들의 깜빡임 방지)
}
Java
RecyclerView.ItemAnimator animator = recyclerView.getItemAnimator();
if (animator instanceof SimpleItemAnimator) {
((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
}
사용 결과 변경된 데이터 부분만 부드럽게 갱신된다.
( RecyclerView의 getItemAnimator로 Animator를 불러와 SimpleItemAnimator인지 확인 setSupportsChangeAnimations 메소드를 호출해 false 지정하면 항목 변경 이벤트의 애니메이션을 표시하지 않음 )
ItemAnimator
RecyclerView에서는 애니메이션에 대한 지원을 위해 ItemAnimator 클래스를 제공
ItemAnimator 클래스는 어댑터가 변경될 때 항목에서 발생하는 애니메이션을 정의 아이템 뷰 항목이 추가, 제거되거나 정렬될 때 애니메이션 처리
itemAnimator를 만들고 애니메이터를 만들어 리사이클러 뷰에 지정해주면 효과가 적용
notifyItemChanged(int position) - 아이템의 위치가 변경되면 알림
notifyItemInserted(int position) - 포지션의 위치에 삽입된 아이템이 있음을 알림
notifyItemMoved(int fromPosition, int toPosition) - fromPosition의 위치 값에서 toPosition으로 아이템 이동시 알림
notifyItemRemoved(int position) – 포지션 위치의 아이템이 제거되었을 때 알림
등등 위 메소드들을 통해 여러 특정 아이템에 대한 애니메이션 적용 가능
SimpleItemAnimator
View 경계를 기록하고 애니메이션을 이동, 변경, 추가 또는 제거할지 여부를 결정하는 ItemAnimator 용 래퍼 클래스
아이템 삽입, 삭제, 이동에 대한 커스텀 가능, 또한 DefaultItemAnimator가 제공되므로 커스텀이 필요 없이 사용 가능
ItemAnimater
lakue.tistory.com/17
'Android > Reference' 카테고리의 다른 글
Android 현재/과거 날짜 시간 구하기 (SimpleDataFormat) (0) | 2021.03.04 |
---|---|
Floating Action Button (플로팅 액션 버튼) (2) | 2021.01.04 |
RecyclerView 엣지 스크롤 이펙트 숨기기 (0) | 2020.12.16 |
Animation / 애니메이션 구현 (AnimationDrawable) (0) | 2020.12.11 |
Android OnSingleClickListener (중복클릭 방지) (0) | 2020.12.11 |