RecyclerView 애니메이션
1. 레이아웃 애니메이션 넣기
https://proandroiddev.com/enter-animation-using-recyclerview-and-layoutanimation-part-1-list-75a874a5d213
** <layoutAnimation> 요소에 duration 속성을 지정하지 않으면 애니메이션이 실행되지 않음.
2. 각 셀마다 애니메이션 나오게 하기
어댑터 안의 onBindHolder 내에 아래의 코드 삽입
(lastPosition은 어댑터 클래스의 전역 변수이며 초기값은 0 또는 -1)
if(position != lastPosition){
Animation animation;
if(position > lastPosition && position != 0) {
animation = AnimationUtils.loadAnimation(holder.itemView.getContext(), R.anim.anim_slideup); //아래로 스크롤 시 보여질 애니메이션
}else{
animation = AnimationUtils.loadAnimation(holder.itemView.getContext(), R.anim.anim_slidedown); //위로 스크롤 시 보여질 애니메이션
}
holder.itemView.startAnimation(animation);
lastPosition = position;
}
** 아이템을 추가 또는 삭제 할 때 lastPosition을 해당 아이템의 position으로 설정하면 추가/삭제 시 애니메이션 발생하지 않음.
ex )
private void add(int index, TextData data) {
//데이터베이스에 데이터 넣기(단일)
lastPosition = index;
dataList.add(index, data);
notifyItemInserted(index);
}
private void remove(TextData data) {
//데이터베이스에서 데이터 지우기(단일)
int removeIndex = dataList.indexOf(data);
lastPosition = removeIndex;
dataList.remove(removeIndex);
notifyItemRemoved(removeIndex);
}
3. 기본 추가/삭제 애니메이션이 보여지길 원한다면..
notifyItemInserted, notifyItemRemoved를 적용(위의 코드의 파란색 형광펜 참조)