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를 적용(위의 코드의 파란색 형광펜 참조)
'개발 > Android' 카테고리의 다른 글
PreferenceManager의 값이 앱 재설치 시 그대로 남아있는 경우 (0) | 2018.05.16 |
---|---|
녹스에서 안드로이드 태블릿 확인 시 디스플레이 설정값 (0) | 2018.04.24 |
안드로이드 촬영, 이미지 가져오기, 자르기 (0) | 2018.02.20 |
[작업중]ACTION_IMAGE_CAPTURE 로 카메라 촬영 시 저장 안되는 문제 (0) | 2018.02.13 |
Intent로 카카오톡 PDF 파일 전송 (0) | 2017.11.23 |