public class MyScrollViewextends ScrollView {
????????/**
????????????? ? * Runnable延遲執(zhí)行的時間
????????? ? */
????????? ? private long delayMillis =100;
????? ? /**
????????? ? * 上次滑動的時間
????? ? */
????????? ? private long lastScrollUpdate = -1;
????????? ? private RunnablescrollerTask =new Runnable() {
????????????@Override
? ? ? ? ? ? public void run() {
????????????????????????long currentTime = System.currentTimeMillis();
? ? ????? ? ????????? ? if ((currentTime -lastScrollUpdate) >100) {
????????????????????????lastScrollUpdate = -1;
????? ? ? ? ? ? ? ????? onScrollEnd();
? ? ? ? ? ? }else {
????????????????????postDelayed(this, delayMillis);
? ? ? ? ? ? }
????}
};
????? ????? public MyScrollView(Context context) {
????????????????????this(context, null);
????????? ? }
????????public MyScrollView(Context context, AttributeSet attrs) {
????????????????????this(context, attrs, 0);
????????? ? }
????????public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
????????????????super(context, attrs, defStyle);
????????? ? }
????????@Override
????????protected void onScrollChanged(int l, int t, int oldl, int oldt) {
????????????????????super.onScrollChanged(l, t, oldl, oldt);
????????? ? ? ????? if (lastScrollUpdate == -1) {
????????????????????????????onScrollStart();
????? ? ? ? ? ? ? ? ? ? postDelayed(scrollerTask, delayMillis);
????????????? ? ? ? }
????????????????// 更新ScrollView的滑動時間
????????? ? ? ? lastScrollUpdate = System.currentTimeMillis();
????? ? }
????????????/**
????????? ? * 滑動開始
????????? ? */
? ????????? private void onScrollStart() {
????????????????????????mListener.onScrollStart();
????????? ? }
????????/**
????????? ? * 滑動結(jié)束
????? ? */
????????? ? private void onScrollEnd() {
????????????????????????mListener.onScrollEnd();
? ????????? }
????????? ?OnScrollListenermListener;
????????? ? public void setOnScrollListener(OnScrollListener onRefreshListener) {
????????????????????mListener = onRefreshListener;
? ????}
????????????public interface OnScrollListener {
????????????????void onScrollStart();
????????? ? ? ? void onScrollEnd();
????????? ? }
????}
獲取到滑動狀態(tài)之后通過監(jiān)聽回調(diào)事件傳出去另萤。