Android 关于 OnScrollListener 事件顺序次数的简要分析

在 Android 的 OnScrollListener 整个事件我主要分析下他的执行顺序:

实现滚动事件的监听接口


new AbsListView.OnScrollListener(){
    @Override
    public void onScrollStateChanged(AbsListView absListView, int scrollState)
    {
        switch (scrollState) {
            case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
                // 手指触屏拉动准备滚动,只触发一次        顺序: 1
                break;
            case AbsListView.OnScrollListener.SCROLL_STATE_FLING:
                // 持续滚动开始,只触发一次                顺序: 2
                break;
            case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
                // 整个滚动事件结束,只触发一次            顺序: 4
                break;
            default:
                break;
        }
    }

    @Override
    public void onScroll(AbsListView absListView, int i, int i1, int i2)
    {
        // 一直在滚动中,多次触发                          顺序: 3
    }
}


之前一直很迷糊,后来仔细测试后得出上面的结论


另外对于 ListView 图片列表的滚动,应该在 

SCROLL_STATE_FLING   时让图片不显示,提高滚动性能让滚动小姑更平滑

SCROLL_STATE_IDLE     时显示当前屏幕可见的图片


对于 onScroll() 接口方法基本上不用他


之前看文档上的说法,用谷歌翻译出来以为 onScroll 方法是滚动完成后的回调,结果实测是滚动执行中的回调,列表稍滚动一段就要触发几十次

http://developer.android.com/reference/android/widget/AbsListView.OnScrollListener.html




不知是文档没描述对,还是翻译不准确,看他语态过去完成时应该是描述错了吧,感觉应该是  scrolling 才对




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。