ListView滚动原理
2015-08-30 23:00
267 查看
ListView原理
。资源控制:
ListView中的特点是可以复用item,节省内存空间。
复用的原理是,凡是滚出屏幕的viewItem都会被放在一个RecycleBin中,等待回收。这里的ViewItem是和ListView没有关联的。
当滚动需要跟上显示一个Item时,就从RecycleBin中取得一个View(能为空),放在需要的位置。
滚动原理:
View的画布是无限大的(没有定义画布的宽和高),并且和父View使用的是同一个画布(也就是说,页面上所有View同一个画布),只有坐标系不同。
每一个View的绘图位置由父View指定,大小由高宽决定。当一个子View相对于父View产生滚动时,父View会给被滚动的View重新指定坐标,从而产生滚动效果。
所以,一个View在“滚动”时,实际上是改变这个View在画布的上的坐标位置(从坐标原点开始绘图,就是View左上角在画布总的位置。)
ListView中的滚动,ListView是父View,每一个ItemView是子View。
当某一个ItemView的坐标位置超出了ListView的边界,ItemView不会被画在画布上,而是被RecycleBin回收。
当需要滚进一个ItemView时,则从RecycleBin中取出一个被回收的ItemView(没有就创建一个新的),绘制在指定的画布位置上。
相关文章推荐
- mongodb basic kb (backup drop ...)
- lambda表达式
- 关于编程珠玑第2章的整理
- AFN实现并发结束后回调拦截的一种思路
- CentOS配置MySQL 小结
- MySQL查看日志
- mac 常用命令(不断更新中)
- IO之文件,Properties集合的存取,其他类
- Android 实现异步刷新UI,定时器等的多种实现方案
- 既然安卓免费,那 Google 是靠什么赚钱的?
- html5学习之路_006
- H3CNE RIP基本配置
- Android传感器
- 在Netty底层监控消息发送到Socket的时间
- Lua直接调用动态链接库(DLL或so文件)
- Android传感器
- java界面设计(swing)
- 逻辑运算符
- RecyclerView学习资料
- Universal-Image-Loader图片缓存架构