联系人那种的listView
2015-10-18 11:13
169 查看
PinnedSectionListView:(固定部分的ListView)分组的listView滑动中固定组标题的实现
分类: android 开源组件2014-03-3018:28 1360人阅读 评论(0) 收藏 举报
在很多应用中,看到这样的listview:listview滑动过程中分组标题固定在上方,当第二个组滑上来时,第一个组才跟着上滑,下一个组固定,直到该组也滑出上边缘。世上无难事只怕有心人,在github上就有人做出来了,而且效果很好(后来发现安卓自带应用中联系人应用就是这样的,估计github的作者也是仿照着联系人做出来的吧)。
先看截图:
![](http://www.jcodecraeer.com/uploads/20140307/13941224949560.png)
![](http://www.jcodecraeer.com/uploads/20140307/13941224944294.png)
![](http://www.jcodecraeer.com/uploads/20140307/13941224952328.png)
PinnedSectionListView继承自listview,众所周知listview的每个子view都是按顺序跟着滚动的,要实现联系人listview的效果还真的找不到思路。看了PinnedSectionListView之后,感觉要改造一个现有的控件,一般都是通过重绘子view来实现的。ViewGroup(ListView继承自它)重绘子view的方法是dispatchDraw。
看看PinnedSectionListView在dispatchDraw中有那些特别的处理:
canvas.translate(pLeft, pTop + mTranslateY);意思是在绘制
mPinnedSection的时候,listview滑动了多长的距离,就将canvas移动多少的距离,使
mPinnedSection始终在可见的范围内固定不变。
使用方法:
1.在xml布局文件中将ListView替换成PinnedSectionListView
PinnedSectionListAdapter接口,最简单的做法是只增加
isItemViewTypePinned方法,该方法必须在item为pinned的情况下返回true。
相关文章推荐
- JSON与XML的区别比较【转载】
- 调用libsvm中的easy.py 时报错ValueError: need more than 0 values to unpack
- TCP为什么需要三次握手,又为什么需要4次挥手?
- 经过上次那次通宵加班,我又想辞职重新找工作了,太不值了
- 使用Python搭建简易HTTP服务
- uCOS-II学习笔记之就绪表
- 哪些笑话只有程序员才能听得懂?
- 遍历数组的两种方法
- 深入理解Activity-任务,回退栈,启动模式
- snprintf的用法
- COC+RTS+MOR游戏开发 一(游戏特色分析,和实践)
- 深入理解Activity-任务,回退栈,启动模式
- 第三次作业---四则运算的进一步完善
- Machine Learning Week 2
- spring framework源码下载并导入eclipse
- 简单匹配算法
- Windows CMD命令大全
- ajax访问websever经验
- 使用数组实现排列乱序
- Android使用UncaughtExceptionHandler捕获全局异常