이전 시간에 조회 시 RecyclerView에 아이템(Item)들이
위에서 쏟아지듯 나타나는 애니메이션 효과 주는 방법에
대해 알아 보았습니다.
이번 시간에는 이어서 스크롤(Scroll)을 내릴 때에도
애니메이션 효과를 주어서 옆으로 하나씩 추가되며
보이는 방법을 알아보겠습니다.
이전 시간에 이어서 하기 때문에 이전 게시물을
보지 않으신 분들은 이전 게시물을 먼저
보시면 됩니다.
2022.01.01 - [안드로이드] - [안드로이드] RecyclerView item animation 서서히 나타나는 효과 주는 방법
1. 실행화면
2. 애니메이션 파일 추가
3. ItemAdapter 기능 구현(ItemAdapter.java)
slide_in_row.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromXDelta="100%"
android:toXDelta="0%"/>
</set>
2022.01.01 - [안드로이드] - [안드로이드 스튜디오] 애니메이션(Animation) 폴더 및 파일 생성하는 방법
기존 소스에서 추가된 부분은
3-1. 변수 추가
int lastPosition = -1;
Context context;
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
View itemView = inflater.inflate(R.layout.item_layout, viewGroup, false);
context = viewGroup.getContext();
return new ViewHolder(itemView);
}
3-2. 애니메이션 적용
onBindViewHolder 메서드에
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
if(viewHolder.getAdapterPosition() > lastPosition){
//애니메이션 적용
Animation animation = AnimationUtils.loadAnimation(context, R.anim.slide_in_row);
((ViewHolder) viewHolder).itemView.startAnimation(animation);
Item item = items.get(position);
viewHolder.setItem(item);
}
}
3-3. 전체 소스
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder>{
ArrayList<Item> items = new ArrayList<Item>();
int lastPosition = -1;
Context context;
static String TAG = "Adapter";
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
View itemView = inflater.inflate(R.layout.item_layout, viewGroup, false);
context = viewGroup.getContext();
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
if(viewHolder.getAdapterPosition() > lastPosition){
//애니메이션 적용
Animation animation = AnimationUtils.loadAnimation(context, R.anim.slide_in_row);
((ViewHolder) viewHolder).itemView.startAnimation(animation);
Item item = items.get(position);
viewHolder.setItem(item);
}
}
@Override
public int getItemCount() {
return items.size();
}
public void addItem(Item item){
items.add(item);
}
public void removeAllItem(){
items.clear();
}
static class ViewHolder extends RecyclerView.ViewHolder{
TextView title_view;
TextView description;
public ViewHolder(@NonNull View itemView) {
super(itemView);
title_view = itemView.findViewById(R.id.title_text);
description = itemView.findViewById(R.id.desc_text);
}
public void setItem(Item item){
title_view.setText(item.getTitle());
description.setText(item.getDescription());
}
}
}
[안드로이드] RecyclerView Item Animation 왼쪽, 오른쪽, 위, 아래 방향별로 효과 주는 방법 (0) | 2022.01.04 |
---|---|
[안드로이드] RecyclerView 스와이프(Swiped) 옆으로 밀어서 삭제하는 방법 (0) | 2022.01.03 |
[안드로이드] RecyclerView Item Animation 서서히 나타나는 효과 주는 방법 (0) | 2022.01.01 |
[안드로이드 스튜디오] 애니메이션(Animation) 폴더 및 파일 생성하는 방법 (0) | 2022.01.01 |
[안드로이드 스튜디오] 레이아웃 추가하는 방법 (0) | 2022.01.01 |
댓글 영역