【Android 笔记】OnScrollListener详解

ListView是很常用的控件,相关的API想必大家都是很熟悉的。今天,记录一个滚动相关的接口OnScrollListener。以往,要实现手指触控相关的操作,首先想到的方案是,在onTouch里获取触控相关的信息,并进行相关的逻辑。往后,一些操作,或许可以放到OnScrollListener里实现。好,废话不多说。来详细看这个接口。

OnScrollListener

 public interface OnScrollListener {
     public static int SCROLL_STATE_IDLE = 0;
     public static int SCROLL_STATE_TOUCH_SCROLL = 1;
     public static int SCROLL_STATE_FLING = 2;

     public void onScrollStateChanged(AbsListView view, int scrollState);
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
               int totalItemCount);
 }

可以看到,OnScrollListener接口有三个静态滚动状态的变量,及两个要实现的方法。

onScrollStateChanged

滚动状态发生变化时,系统会回调这个方法。滚动状态会被赋值到scrollState,scrollState的值如下:

scrollState值 含义
SCROLL_STATE_IDLE 不滚动时的状态,通常会在滚动停止时监听到此状态
SCROLL_STATE_TOUCH_SCROLL 正在滚动的状态
SCROLL_STATE_FLING 用力快速滑动时可监听到此值

onScroll

滚动过程中会回调此方法。详细的参数含义:

onScroll方法参数 含义
firstVisibleItem 第一个可视的项,这里是整个item都可视的项。被挡住一点都不符合
visibleItemCount 可视的项的个数
totalItemCount 总item的个数

使用方法

直接通过setOnScrollListener就ok。

listView.setOnScrollListener(new AbsListView.OnScrollListener(){

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {

            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

            }
        });

ps: OnScrollListener还是很有用的,可以用来实现滑动加载和下拉刷新等,有空会整理出来,如何使用OnScrollListener实现下拉刷新和动态加载。

你可能感兴趣的:(Android开发之路)