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开发 Swift
安卓与iOS开发环境对比分析
在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统无疑是主角。它们各自拥有独特的特点和优势,为开发者提供了不同的开发环境和工具。本文将深入浅出地探讨安卓和iOS开发环境的主要差异,包括开发工具、编程语言、用户界面设计、性能优化以及市场覆盖等方面,旨在帮助初学者更好地理解两大平台的开发特点,并为他们选择合适的开发路径提供参考。通过比较分析,我们将揭示不同环境下的开发实践,以及如何根据项目需求和目标受众来选择最合适的开发平台。
43 2
|
1天前
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
Android面试高频知识点(1) 图解 Android 事件分发机制
8 1
|
6天前
|
XML 前端开发 Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
13天前
|
Android开发
Android 事件分发机制详细解读
Android 事件分发机制详细解读
24 4
|
1月前
|
安全 Android开发 数据安全/隐私保护
探索安卓与iOS的安全性差异:技术深度分析与实践建议
本文旨在深入探讨并比较Android和iOS两大移动操作系统在安全性方面的不同之处。通过详细的技术分析,揭示两者在架构设计、权限管理、应用生态及更新机制等方面的安全特性。同时,针对这些差异提出针对性的实践建议,旨在为开发者和用户提供增强移动设备安全性的参考。
91 3
|
9天前
|
开发工具 Android开发 Swift
安卓与iOS开发环境的差异性分析
【10月更文挑战第8天】 本文旨在探讨Android和iOS两大移动操作系统在开发环境上的不同,包括开发语言、工具、平台特性等方面。通过对这些差异性的分析,帮助开发者更好地理解两大平台,以便在项目开发中做出更合适的技术选择。
|
1月前
|
安全 Linux Android开发
探索安卓与iOS的安全性差异:技术深度分析
本文深入探讨了安卓(Android)和iOS两个主流操作系统平台在安全性方面的不同之处。通过比较它们在架构设计、系统更新机制、应用程序生态和隐私保护策略等方面的差异,揭示了每个平台独特的安全优势及潜在风险。此外,文章还讨论了用户在使用这些设备时可以采取的一些最佳实践,以增强个人数据的安全。
|
2月前
|
Java 开发工具 Android开发
安卓与iOS开发环境对比分析
【8月更文挑战第20天】在移动应用开发的广阔天地中,Android和iOS两大平台各自占据着重要的位置。本文将深入探讨这两种操作系统的开发环境,从编程语言到开发工具,从用户界面设计到性能优化,以及市场趋势对开发者选择的影响。我们旨在为读者提供一个全面的比较视角,帮助理解不同平台的优势与挑战,并为那些站在选择十字路口的开发者提供有价值的参考信息。
|
1月前
|
IDE 开发工具 Android开发
安卓与iOS开发环境对比分析
本文将探讨安卓和iOS这两大移动操作系统在开发环境上的差异,从工具、语言、框架到生态系统等多个角度进行比较。我们将深入了解各自的优势和劣势,并尝试为开发者提供一些实用的建议,以帮助他们根据自己的需求选择最适合的开发平台。
32 1
|
2月前
|
开发框架 Android开发 Swift
安卓与iOS应用开发对比分析
【8月更文挑战第20天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。本文将深入探讨这两大操作系统在开发环境、编程语言、用户界面设计、性能优化及市场分布等方面的差异和特点。通过比较分析,旨在为开发者提供一个宏观的视角,帮助他们根据项目需求和目标受众选择最合适的开发平台。同时,文章还将讨论跨平台开发框架的利与弊,以及它们如何影响着移动应用的开发趋势。