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 触发多次,其他事件在整个过程中只会触发一次
Android 关于 OnScrollListener 事件顺序次数的简要分析的更多相关文章
- Android 4.4 Kitkat 音频实现及简要分析
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jingxia2008/article/details/26701899 在 Android 4.4 ...
- [转]Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
转自:Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划 前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了Surfa ...
- Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8010977 前面我们从Android应用程序与 ...
- android中的事件传递和处理机制
一直以来,都被android中的事件传递和处理机制深深的困扰!今天特意来好好的探讨一下.现在的感觉是,只要你理解到位,其实事件的 传递和处理机制并没有想象中的那么难.总之,不要自己打击自己,要相信自己 ...
- Android应用程序的Activity启动过程简要介绍和学习计划
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6685853 在Android系统中,Activ ...
- Android View 的事件分发原理解析
作为一名 Android 开发者,每天接触最多的就是 View 了.Android View 虽然不是四大组件,但其并不比四大组件的地位低.而 View 的核心知识点事件分发机制则是不少刚入门同学的拦 ...
- Android事件分发机制源码分析
Android事件分发机制源码分析 Android事件分发机制源码分析 Part1事件来源以及传递顺序 Activity分发事件源码 PhoneWindow分发事件源码 小结 Part2ViewGro ...
- 一个demo让你彻底理解Android中触摸事件的分发
注:本文涉及的demo的地址:https://github.com/absfree/TouchDispatch 1. 触摸动作及事件序列 (1)触摸事件的动作 触摸动作一共有三种:ACTION_DOW ...
- Unity3D事件顺序与功能
Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接理解为事件函数,例如大家都很清楚的Start,Update等函数,以下做个总结. Awake 当 ...
随机推荐
- 详述JavaScript数组
摘要 数组是JavaScript中的常用类型,本文详述了数组的基本知识以及一些常用的数组方法,并对每种方法进行了详细解释 数组定义 用字面量直接定义 var arr=[0,0,0]; //注意,是方括 ...
- 【转】关于python中re模块split方法的使用
注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...
- 教你成为全栈工程师(Full Stack Developer) 〇-什么是全栈工程师
作为一个编码12年的工程师老将,讲述整段工程师的往事,顺便把知识都泄露出去,希望读者能少走一些弯路. 这段往事包括:从不会动的静态网页到最流行的网站开发.实现自己的博客网站.在云里雾里的云中搜索.大数 ...
- 剑指offer ------ 刷题总结
面试题3 -- 搜索二维矩阵 写出一个高效的算法来搜索 m × n矩阵中的值. 这个矩阵具有以下特性: 1. 每行中的整数从左到右是排序的. 2. 每行的第一个数大于上一行的最后一个整数. publi ...
- Linux 下安裝 Java SE Development Kit(JDK)並配置環境變量
下載頁面:http://www.oracle.com/technetwork/java/javase/archive-139210.html 打開“Java SE 7”,再打開“Java SE Dev ...
- [SOJ] 简单哈希
Description 使用链地址法(又称拉链法)可以解决Hash中的冲突问题.其基本思想是:将具有相同哈希地址的记录链成一个单链表,m个哈希地址就设m个单链表,然后用一个数组将m个单链表的表头指针存 ...
- 读书笔记之《The Art of Readable Code》
<The Art of Readable Code>- Dustin Boswell, Trevor Foucher O'Reilly出版 整体认知:这本书写得很好,每一章后面的总结 ...
- c# 读取ACCESS 数据库
using System; using System.Collections.Generic; using System.Data.OleDb; using System.IO; using Syst ...
- idea空包自动叠加问题
取消上面选项就行了.
- python从初识到精通1
Python3 基本数据类型 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型& ...