OnScrollListenerPro

————OnScrollListener 加强版

@[Android|ListView|OnScrollListener]


在写listview的时候很时候我们都会遇到一些场景

  1. 判断当前是向上滚动,精确到px
  2. 判断是否滚动到最后一个

但是Android提供给我们的OnScrollView不能给我们提供这些功能
于是我写了一个OnScrollListenerPro来完成这样的事情

package org.hangox.test;import android.view.View;import android.widget.AbsListView;/** * Created With Android Studio * User 47 * Date 2014-11-03 * Time 17:42 * 一个加强板的OnScrollListener * 可以提供向上滑动向下活动检测 * 是否是最后一个检测 */public class OnScrollListenerPro implements AbsListView.OnScrollListener {    private AbsListView mAbsListView;    private int mLimit = 40;    private int mLastScroll;    @Override    public void onScrollStateChanged(AbsListView view, int scrollState) {        mAbsListView = view;    }    /**     * 设定最少滚动多少才算是滚动     * @param mLimit     */    public void setLimit(int mLimit){        this.mLimit = mLimit;    }    @Override    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {        mAbsListView = view;        int currentScrollY = getScrollY();        int dValue = currentScrollY - mLastScroll;        if(dValue < -mLimit){//向上滚            onScrollUp(mLastScroll,currentScrollY);            mLastScroll = currentScrollY;        }else if(dValue > mLimit ){//向下滚            onScrollDown(mLastScroll,currentScrollY);            mLastScroll = currentScrollY;        }        if(((totalItemCount > 0) && (firstVisibleItem + visibleItemCount >= totalItemCount - 1)))            onLastItemShow();    }    /**     * 向上滚动     * @param lastScroll     * @param currentScroll     */    public void onScrollUp(int lastScroll,int currentScroll){    }    /**     * 向下滚动     * @param lastScroll 上一次滚动值     * @param currentScroll 这一次     */    public void onScrollDown(int lastScroll,int currentScroll){    }    public void onLastItemShow(){    }    public int getScrollY() {//获取滚动距离        View c = mAbsListView.getChildAt(0);        if (c == null) {            return 0;        }        int firstVisiblePosition = mAbsListView.getFirstVisiblePosition();        int top = c.getTop();        int headerHeight = 0;        if (firstVisiblePosition >= 1) {            headerHeight = mAbsListView.getHeight();        }        return -top + firstVisiblePosition * c.getHeight() + headerHeight;    }}

使用很简单,重写其中的函数就可以了

更多相关文章

  1. [android] ScrollView 设置滚动条的初始位置
  2. 1.2android——UI界面之ScrollView实现上下文滚动
  3. 优化Recorder H5录音:可边录边转码上传服务器,支持微信提供Android
  4. Android(安卓)ScrollView 滚动监听
  5. Android侧拉框的简单实现
  6. Content Providers-原文[译]
  7. Android重力传感器实现滚动的弹球
  8. Android:如何给 ScrollView 添加滑块滚动条
  9. Android(安卓)文字自动滚动(跑马灯)效果的两种实现方法[特别好使]

随机推荐

  1. 作为人才我们为什么要和几个猎头保持良好
  2. Android(安卓)组件样式定制方法详解
  3. Android界面设计适配不同屏幕的尺寸和密
  4. Android(安卓)相机的使用
  5. 史上最全面,最细的Android中layout建立子
  6. 新建Android(安卓)AVD,点击start、launch,
  7. 主题:四,android四大组件基础介绍及打电话,
  8. 内存问题
  9. 【Android(安卓)Training - 15】云同步的
  10. 学习android, 自己编的一个黑白棋游戏 (