package com.sjl.yuehu.util; import java.util.LinkedList; import java.util.Queue; /** * Created by hefuyi on 16/8/8. */ public class ScrollPullDownHelper { private static final int PULLING_DOWN_TIME_MAX = 8; private static final int PULLING_DOWN_TIME_THRESHOLD = 6; private int lastScrollY; private final Queue<Boolean> lastestPullingDown; public ScrollPullDownHelper() { lastScrollY = 0; lastestPullingDown = new LinkedList<>(); } //记录最近8次的滚动,如果最近的8次当中有6次是向下滚动,则判断为向下滚动 public boolean onScrollChange(int scrollY) { boolean isPullingDownNow = scrollY < lastScrollY; lastestPullingDown.offer(isPullingDownNow); if (lastestPullingDown.size() > PULLING_DOWN_TIME_MAX) { lastestPullingDown.poll(); } lastScrollY = scrollY; return getPullingDownTime() >= PULLING_DOWN_TIME_THRESHOLD; } private int getPullingDownTime() { int result = 0; for (Boolean isPullingDown : lastestPullingDown) { if (isPullingDown) { result++; } } return result; } }