Я пытался как изображение каркасов Picasso и Glide загружать изображения с SD и отображать их в ImageView ReceyclerView в списке элемента. Список ReceyclerView содержит около 50 наименований и более.Заикание эффектов во время прокрутки с помощью андроида Пикассо или Glide
Всякий раз, когда я прокручиваю список, движение прокрутки не является беглым и иногда начинает заикаться, что ухудшает UX по моему мнению. Я загружаю только изображения с диска (SD) внутри фрагмента.
Для Пикассо Я использовал следующий код:
Picasso.with(activity.getApplicationContext())
.load(Constants.ABS_PATH_USER_IMAGE + user.getPicture() + ".jpg")
.tag(PicassoOnScrollListener.TAG)
.resize(100, 100)
.centerCrop()
.transform(new CircleTransform())
.placeholder(R.drawable.default_user)
.error(R.drawable.default_user)
.into(holder.thumbNail);
Пикассо ScrollListener выглядит следующим образом:
public class PicassoOnScrollListener extends RecyclerView.OnScrollListener {
public static final Object TAG = new Object();
private static final int SETTLING_DELAY = 500;
private static Picasso sPicasso = null;
private Runnable mSettlingResumeRunnable = null;
public PicassoOnScrollListener(Context context) {
if(this.sPicasso == null) {
this.sPicasso = Picasso.with(context.getApplicationContext());
}
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int scrollState) {
if(scrollState == RecyclerView.SCROLL_STATE_IDLE) {
recyclerView.removeCallbacks(mSettlingResumeRunnable);
sPicasso.resumeTag(TAG);
} else if(scrollState == RecyclerView.SCROLL_STATE_SETTLING) {
mSettlingResumeRunnable = new Runnable() {
@Override
public void run() {
sPicasso.resumeTag(TAG);
}
};
recyclerView.postDelayed(mSettlingResumeRunnable, SETTLING_DELAY);
} else {
sPicasso.pauseTag(TAG);
}
}}
Чтобы добавить ScrollListener в ReceyclerView я следующее:
myRecyclerView.addOnScrollListener(new PicassoOnScrollListener(getContext()));
Для Glide я просто использовал follwong образец кода:
Glide
.with(mActivity.getApplicationContext())
.load(Constants.ABS_PATH_USER_IMAGE + author.getPicture() + ".jpg")
.centerCrop()
.placeholder(R.drawable.default_user)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.transform(new GlideCircleTransform(mActivity.getApplicationContext()))
.into(holder.thumbNailAuthor);
У вас есть какие-либо идеи, как добиться плавного движения прокрутки?