2016-11-01 7 views
4

Мне интересно, как я могу избежать маленького белого «мигания» просмотров в режиме recycliew, когда пользователь прокручивается немного быстрее.
Мигания можно избежать, конечно, путем предварительной загрузки большего количества просмотров за пределы видимого экранаAndroid Recyclerview preload views

Я еще ничего не нашел, как это можно сделать, хотя это должно быть довольно распространенная задача?

Я попробовал этот код из блога:

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; 
    } 
} 

Тогда я назначил LayoutManager к моему обычаю Recyclerview в конструкторе с помощью setLayoutManager()
Это «обычай», но я только хотел, чтобы установить LayoutManager в costructor, вот почему я переписал на RecyclerView
к сожалению, это не имеет никакого эффекта

ответ

3

RecyclerView является очень эффективным API уже и, как правило, если у вас есть кадры падения, вы можете оптимизировать расположение элемента в будьте легче, а также убедитесь, что вы освобождаете ресурсы, когда виды переработаны. На самом деле нет необходимости предварительно загружать что-либо.

Вот сообщение в блоге, что дает некоторые идеи о том, как сделать эти вещи https://blog.workable.com/recyclerview-achieved-60-fps-workables-android-app-tips/

Они не упоминают его в этой должности, но если ваши детали имеют изображения, убедитесь, что эти изображения не слишком большой.

Главное - сделать рисунок ваших просмотров как можно быстрее, потому что все постоянно перерисовывается при прокрутке.

+0

Я вижу вашу точку зрения, я буду оптимизировать свои предметы! –