在 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. 2011.06.08——— android 1.6 launcher研究之launcher的左右滑
  2. Android拨号器的实现(四中点击事件)
  3. android中文api(79)——Gallery
  4. Android中的dispatchTouchEvent()、onInterceptTouchEvent()和on
  5. android随意记
  6. Android(安卓)onSaveInstanceState和onRestoreInstanceState触发
  7. android中MotionEvent.ACTION_CANCEL事件如何被触发?
  8. Android点击事件的四种写法
  9. Android(安卓)Gesture Detector

随机推荐

  1. MMS发送流程 Android2.2
  2. android 颜色搭配表
  3. 19个实用的Android开发工具
  4. Android Pmem
  5. Android后台保活,这里有你需要的所有姿势
  6. “tns doctor” “You need to have the
  7. Android 折叠效果示例
  8. Android时间互换代码
  9. Annotation processors must be explicit
  10. Android 图片裁剪功能实现详解(类似QQ自定