1
RecyclerView 아이템에 애니메이션을 적용하려면 다음 코드가 필요합니다. 이것은 매우 효과적이지만 아래로 스크롤하면 나타나는 모든 항목을 움직이게합니다.RecyclerView 항목 애니메이션 : 처음에 보이는 아이템에만 애니메이션 적용
내가 원하는 것은 처음에 표시되는 인 항목에 대해서만 애니메이션이 재생되는 Google Play 뮤직 앱과 같은 동작입니다. 애니메이션 어댑터가 없으므로 스크롤을 통해 표시되는 항목이 나타나야합니다. 이 동작을 보관하는 방법에 대한 아이디어가 있습니까? (
class YourAdapter extends RecyclerView.Adapter{
private int lastPosition = -1;
private boolean isAnimation;
YourAdapter(...)
{
...
this.isAnimation = true;
}
....
private void switchAnimation(boolean isAnimation)
{
this.isAnimation = isAnimation;
}
private void animateItem(int position, View viewToAnimate)
{
if (position > m_LastPosition && isAnimation)
{
var animation = AnimationUtils.LoadAnimation(Application.Context, Resource.Animation.slide_in_bottom);
viewToAnimate.StartAnimation(animation);
m_LastPosition = position;
}
}
} 당신의 LayoutManager의 다음
이 방법 onLayoutChildren
를 오버라이드 (override) :
public class RecyclerViewAnimationAdapter : RecyclerView.Adapter
{
private int m_LastPosition = -1;
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
base.OnBindViewHolder(holder, position);
animateItem(position, holder.ItemView);
}
public override void OnViewDetachedFromWindow(Object holder)
{
base.OnViewDetachedFromWindow(holder);
var viewToAnimate = ((RecyclerView.ViewHolder) holder).ItemView;
viewToAnimate.ClearAnimation();
}
private void animateItem(int position, View viewToAnimate)
{
if (position > m_LastPosition)
{
var animation = AnimationUtils.LoadAnimation(Application.Context, Resource.Animation.slide_in_bottom);
viewToAnimate.StartAnimation(animation);
m_LastPosition = position;
}
}
}
안녕하세요. 정말 고맙습니다. 나는 오늘 나중에 그것을 시도 할 것이다 :) –
고마워. 아주 잘 작동합니다! –