0

をスクロール(スクロールしたときのすべての項目の間にスペースが伸びるだろう)、でも私は、このようなrecyclerview-animatorsRecyclerViewItemAnimatorsかなど多くの関連ライブラリを参照各ホルダーのアニメーションをBindViewHolder()で作成します。しかし、上のすべての方法は、初めてのロードビューでアニメーションを作成し、作成したいアニメーションのように実装することはできません。誰もがそういうことをやったので、その問題を解決するのを助けてください。どうもありがとうございます。リサイクラービュー項目のアニメーションスクロールしたとき、私が発見し、研究の多くの方法を、カスタムリサイクルビュー項目のアニメーション化する

EDIT:

@Androidが推奨されているように、私は方法をOnScrollListener実装しようとしました。しかし、それは正しく動作しません。以下このコードは、私はそれらを実装する方法を示しています。

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
      @Override 
      public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
       super.onScrollStateChanged(recyclerView, newState); 
      } 
      @Override 
      public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
       super.onScrolled(recyclerView, dx, dy); 
       LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); 
       int lastPosition = layoutManager.findLastCompletelyVisibleItemPosition(); 
       int firstPosition = layoutManager.findFirstCompletelyVisibleItemPosition(); 
       for (int i = firstPosition; i <= lastPosition; i++) { 
        if (dy < 0) { 
         AnimationUtils.animate(recyclerView.findViewHolderForAdapterPosition(i), false); 
        } else { 
         AnimationUtils.animate(recyclerView.findViewHolderForAdapterPosition(i), true); 
        } 
       } 
      } 
     }); 

public class AnimationUtils { public static void animate(RecyclerView.ViewHolder viewHolder, boolean isGoDown){ ObjectAnimator translateY = ObjectAnimator.ofFloat(viewHolder.itemView, "translationY", isGoDown == true ? 300 : -300, 0); translateY.setDuration(300); translateY.setInterpolator(new DecelerateInterpolator(2f)); translateY.start(); } }

+0

方法 RecyclerView項目に

をフェージングのための一例であるあなたは、おそらくRecyclerViewから拡張するクラスを作成する必要があります。スクロール速度(onScrolのdyまたはdx)に基づいてビューの高さを調整するOnScrollListener LED)。次に上下にスクロールしているかどうかに応じて、ビューの重力を上下に設定します。 – Android

+0

@Android私は、あなたが私のために推奨した方法に従って、カスタムRecyclerView.OnScrollListenerコールバックに2日間以上費やしました。しかし、それは正しく動作しません、今私はこの問題を解決するための任意のアイデアはありません。それを詳細に記述したり、別の方法で表現したりできますか?大変ありがとうございます –

答えて

1

あなたはこのようRecyclerViewアイテムをアニメーション化することができます。
アニメーションメソッドを記述し、そのメソッドをonBindViewHolder()メソッドで呼び出すだけでいいです。ここで

public void setFadeAnimation(View view) { 
    AlphaAnimation anim = new AlphaAnimation(0.0f, 1.0f); 
    anim.setDuration(500); 
    view.startAnimation(anim); 
} 

を呼び出し、このメソッド

@Override 
public void onBindViewHolder(final ViewHolder holder, int position) { 

    setFadeAnimation(holder.itemView); 
    ........ 

} 
+0

このようにして、itemViewの所有者を初めて作成するときに適用されます。リサイクラービューをスクロールするたびにアニメーションを作成したい –

+0

はい、スクロール中にフォアグラウンドになるとビューが作成されるため、同じ効果が得られます。 –

+0

私はこのソリューションを私のアプリで使用して、うまくいきました。それがあなたのために働かないなら私に知らせてください。 –

関連する問題