package com.github.captain_miao.agera.tutorial.helper; import android.content.Context; import android.support.v7.widget.RecyclerView; import com.squareup.picasso.Picasso; /** * @author YanLu * @since 16/5/23 */ public class PicassoOnScrollListener extends RecyclerView.OnScrollListener { public static final Object TAG = new Object(); private static final int SETTLING_DELAY = 500; private int SCROLL_THRESHOLD = 500; private static Picasso sPicasso = null; private Runnable mSettlingResumeRunnable = null; public PicassoOnScrollListener(Context context) { if(sPicasso == null) { sPicasso = Picasso.with(context.getApplicationContext()); SCROLL_THRESHOLD = context.getResources().getDisplayMetrics().heightPixels; } } @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); //} } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); if (Math.abs(dy) > SCROLL_THRESHOLD) { sPicasso.pauseTag(TAG); } // else { // sPicasso.resumeTag(TAG); // } } public static Picasso getPicasso() { return sPicasso; } }