详细讲解Android中的AbsListView的源码
2015-01-05 09:54
232 查看
不知道各位童鞋们在开发的过程中有没有感兴趣过ListView是如何实现的呢?其实本身ListView的父类AbsListView才是关键,但是如果大家看过源码的话,会发现AbsListView将近7000多行代码,是不是头大啊,呵呵,没事,下面咱们就一起来看看吧。
我们先从类中的常量开始分析:
上面的含义分别如下:
1、禁止副本模式
2、当数据集合发生变化的通知被接受到,列表将会自动的滚向底部。但条件必须是最后一条数据已经出现在屏幕上
3、列表将会自动的滚动到底部,不论当前的数据是否可见。
4、猜测我们并不是在触摸的手势中间。
5、假设我们接收到一个touch的触摸的事件,我们等待去看到它是否是一个滑动的手势。
6、预测到当前的touch事件是一个tap事件,我们正在等待这是否是一个长按的事件。
7、其余的常量与此类此,在此省略了。
接下来我们来看一一批与视图绘制相关的变量:
上面的含义分别如下:
1、用来绘制选中项的图片
2、列表中当前被选中的位置
3、在绘制的时刻定义选中的location与对应的尺寸
4、这个数据被设置,存储未使用的视图,它们将会被重用,在接下来的布局中,避免重用。
5、选中的padding的位置
6、向上滚动的标志与向下滚动的标志的视图
7、当这个视图在滚动的时候,这个标志位被设置为true,预示着绘制缓存的子类在其子类上将会是能够的。
8、获取向下的移动的位置
9、其余的变量的注解省略。
接下来,我们看几个接口的定义
1、OnScrollListener
这个接口定义的是当列表或者是九宫格滚动的时候的回调。
在这个接口中存在下面的几个常量
分别指代的是当前的列表处于静止、手指处于触摸状态的滑动以及手指离开的减速滑动并趋向于静止。
其中接口中还定义了两个函数:
1、onScrollStateChanged
2、onScroll
第一个视图是当视图滚动正准备进行时候的回调
第二个视图是当视图的滚动已经结束的回调
2、SelectionBoundsAdjuster
这个接口的含义是允许当前列表项的顶级视图实现这个接口去修改它的展示的边界区域。
接下来的代码选取几个Api来看一下:
1、setFastScrollerEnabledUiThread
这个方法的功能是显而易见的,操纵的对象是FastScroller,设置是否支持快速的滑动,然后再进行重新绘制视图。
下面的几个方法是计算滚动区域与展示的效果的方法,我们选取几个来看一下:
这个是计算垂直方向上的滚动的区域。
这个算法我们可以看一下
1、
这里面的100我们可以理解为系统假设单个的列表的选项的高度是100,本着多退少补的原则,不论height是大于100还是小于100, 100 / height,得到的数值可以理解为是缩放因子 scaleFactor, top * scaleFactor 计算得到的是最终需要多加的边距。
结伴旅游,一个免费的交友网站:www.jieberu.com
推推族,免费得门票,游景区:www.tuituizu.com
我们先从类中的常量开始分析:
1、禁止副本模式
2、当数据集合发生变化的通知被接受到,列表将会自动的滚向底部。但条件必须是最后一条数据已经出现在屏幕上
3、列表将会自动的滚动到底部,不论当前的数据是否可见。
4、猜测我们并不是在触摸的手势中间。
5、假设我们接收到一个touch的触摸的事件,我们等待去看到它是否是一个滑动的手势。
6、预测到当前的touch事件是一个tap事件,我们正在等待这是否是一个长按的事件。
7、其余的常量与此类此,在此省略了。
接下来我们来看一一批与视图绘制相关的变量:
1、用来绘制选中项的图片
2、列表中当前被选中的位置
3、在绘制的时刻定义选中的location与对应的尺寸
4、这个数据被设置,存储未使用的视图,它们将会被重用,在接下来的布局中,避免重用。
5、选中的padding的位置
6、向上滚动的标志与向下滚动的标志的视图
7、当这个视图在滚动的时候,这个标志位被设置为true,预示着绘制缓存的子类在其子类上将会是能够的。
8、获取向下的移动的位置
9、其余的变量的注解省略。
接下来,我们看几个接口的定义
1、OnScrollListener
这个接口定义的是当列表或者是九宫格滚动的时候的回调。
在这个接口中存在下面的几个常量
其中接口中还定义了两个函数:
1、onScrollStateChanged
2、onScroll
第一个视图是当视图滚动正准备进行时候的回调
第二个视图是当视图的滚动已经结束的回调
2、SelectionBoundsAdjuster
这个接口的含义是允许当前列表项的顶级视图实现这个接口去修改它的展示的边界区域。
接下来的代码选取几个Api来看一下:
1、setFastScrollerEnabledUiThread
下面的几个方法是计算滚动区域与展示的效果的方法,我们选取几个来看一下:
这个算法我们可以看一下
1、
结伴旅游,一个免费的交友网站:www.jieberu.com
推推族,免费得门票,游景区:www.tuituizu.com
相关文章推荐
- 详细讲解Android中的AbsListView的源码
- 详细讲解Android中的Message的源码
- Android Adapter机制 源码笔记(7): AbsListView(3)
- 详细讲解Android中的Message的源码
- Android Adapter机制 源码笔记(5): AbsListView(1)
- Android基础控件之ListView详细使用讲解
- 详细讲解Android中的动画Animation(依据Android源码目录结构讲解)
- Android Adapter机制 源码笔记(6): AbsListView(2)
- Android源码分析:这是一份详细的图片加载库Glide源码讲解攻略
- Android开发中通过源码彻底理解ListView工作原理【超详细】
- 详细讲解Android中的Message的源码
- 详细讲解Android中的Message的源码
- Android监听Home键、锁屏、解屏(落雨敏详细讲解)附源码
- Android中的Intent详细讲解
- 【Android】树形菜单、扩展下拉菜单BaseExpandableListAdapter、AbsListView
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- Android中的Intent详细讲解
- 【Android】树形菜单、扩展下拉菜单BaseExpandableListAdapter、AbsListView
- 【原创】C#导出数据到EXCEL方法谈(附实例源码和超级无敌详细讲解)
- Android_launcher的源码详细分析