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

简介:

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

实现滚动事件的监听接口


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

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


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


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

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

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


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


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

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




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

-----------------------------------------------------------------------------------------------------------------------

补充:

之前的顺序测试还不够细致,今天偶然测试间发现问题:

1. 当手指只轻触屏幕不拉动只会触发一次 onScroll 方法,不会触发其他滚动事件

2. 如果手指触碰屏幕后停滞一下再滑动则首先执行一次 onScroll 方法 然后才是 SCROLL_STATE_TOUCH_SCROLL  事件

3. 如果手指碰到屏幕后直接滑动则第一次就执行 SCROLL_STATE_TOUCH_SCROLL  事件

3. 触发 SCROLL_STATE_TOUCH_SCROLL 事件后还会继续多次触发 onScroll 事件,而不是直接触发 SCROLL_STATE_FLING 事件

4. 滚动后 不一定 会触发  SCROLL_STATE_FLING 事件,可能和手指滑动的距离有关系

5. 滚动的过程中会多次调用 onScroll 方法

6. 除了 onScroll 触发多次,其他事件在整个过程中只会触发一次





目录
相关文章
|
1月前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
21 1
|
2月前
|
Android开发 数据安全/隐私保护 iOS开发
安卓与iOS系统的发展趋势与比较分析
【2月更文挑战第6天】 在移动互联网时代,安卓和iOS系统作为两大主流移动操作系统,各自呈现出不同的发展趋势。本文将从技术角度出发,对安卓和iOS系统的发展方向、特点及未来趋势进行比较分析,以期为读者提供更深入的了解和思考。
36 4
|
3月前
|
监控 Android开发 C语言
深度解读Android崩溃日志案例分析2:tombstone日志
深度解读Android崩溃日志案例分析2:tombstone日志
86 0
|
3月前
|
数据安全/隐私保护 Android开发
2023安卓逆向 -- 某合伙apk登录加密分析
2023安卓逆向 -- 某合伙apk登录加密分析
26 0
|
4月前
|
XML Java Android开发
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
39 0
|
3天前
|
存储 Java Android开发
Android系统 设置第三方应用为默认Launcher实现和原理分析
Android系统 设置第三方应用为默认Launcher实现和原理分析
18 0
|
3天前
|
存储 Java Linux
Android系统获取event事件回调等几种实现和原理分析
Android系统获取event事件回调等几种实现和原理分析
25 0
|
2月前
|
网络协议 算法 Android开发
安卓逆向 -- 实战某峰窝APP(动态分析)
安卓逆向 -- 实战某峰窝APP(动态分析)
32 4
|
2月前
|
安全 搜索推荐 Android开发
Android 与 iOS 的比较分析
【2月更文挑战第5天】 Android 和 iOS 是目前市场上两种最流行的移动操作系统,它们都拥有自己的特点和优势。本文将会分别从操作系统设计、应用生态、安全性等方面对这两种操作系统进行比较和分析,希望能够帮助读者更好地选择适合自己的移动设备。
|
3月前
|
安全 算法 JavaScript
安卓逆向 -- 关键代码定位与分析技术
安卓逆向 -- 关键代码定位与分析技术
43 0