转载自:http://www.2cto.com/kf/201402/278552.html
-
在 Android 的 OnScrollListener 整个事件我主要分析下他的执行顺序:
实现滚动事件的监听接口
12345678910111213141516171819202122232425new
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 才对