2016-11-01 12 views
4

ユーザーが少し速くスクロールしたとき、私はリサイクルビューで小さな白い「点滅」を避けることができますか?
目に見える画面の外にもっと多くのビューをプリロードすることで、点滅を避けることができます。Android Recyclerviewプリロードビュー

これは非常に一般的な作業ではありませんが、

私はブログから、このコードを試してみました:

public class PreCachingLayoutManager extends LinearLayoutManager { 
    private static final int DEFAULT_EXTRA_LAYOUT_SPACE = 600; 
    private int extraLayoutSpace = -1; 
    private Context context; 

    public PreCachingLayoutManager(Context context) { 
     super(context); 
     this.context = context; 
    } 

    public PreCachingLayoutManager(Context context, int extraLayoutSpace) { 
     super(context); 
     this.context = context; 
     this.extraLayoutSpace = extraLayoutSpace; 
    } 

    public PreCachingLayoutManager(Context context, int orientation, boolean reverseLayout) { 
     super(context, orientation, reverseLayout); 
     this.context = context; 
    } 

    public void setExtraLayoutSpace(int extraLayoutSpace) { 
     this.extraLayoutSpace = extraLayoutSpace; 
    } 

    @Override 
    protected int getExtraLayoutSpace(RecyclerView.State state) { 
     if (extraLayoutSpace > 0) { 
      return extraLayoutSpace; 
     } 
     return DEFAULT_EXTRA_LAYOUT_SPACE; 
    } 
} 

その後、私はsetLayoutManagerを(使用してコンストラクタで私のカスタムRecyclerviewへのLayoutManagerを割り当て)
それは、「カスタム」ですが、私は設定したいです私は残念ながら、これは何の影響も

答えて

3

を持っていなかったRecyclerViewはあなたがドロップフレームを持っている場合、あなたはあなたのアイテムのレイアウトを最適化することができ、既に、通常は非常に効率的なAPIであるRecyclerView
を上書きする理由costructorでLayoutManagerが、thatsのビューがリサイクルされたときにリソースを解放するようにしてください。実際に何かをあらかじめロードする必要はありません。ここで

は、それらのことを行う方法のいくつかのアイデアを与えるブログ記事です https://blog.workable.com/recyclerview-achieved-60-fps-workables-android-app-tips/

彼らは、この記事ではそれを言及、しかし、あなたのアイテムがイメージを持っている場合も、必ずそれらのイメージがあまりにもでないことはありません。大きい。

主なポイントは、スクロールするごとにすべてが常に再描画されるため、ビューの描画をできるだけ速くすることです。

+0

私はあなたのポイントを参照して、私は私のアイテムを最適化します! –