博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发:TableFixHeaders源码分析
阅读量:5063 次
发布时间:2019-06-12

本文共 1144 字,大约阅读时间需要 3 分钟。

最近需要在android上的展示表格数据,在github上找到了TableFixHeaders(https://github.com/InQBarna/TableFixHeaders)。

项目文件最主要的有下面几个类

1、TableFixHeaders继承自viewGroup,是视图文件,负责展示和滑动交互

2、TableAdapter和BaseTableAdapter,类似于listview的adapter,使用TableFixHeaders需要继承BaseTableAdapter实现其中的方法

3、Recycler,View堆栈负责管理可视范围外的对象

 

TableFixHeaders在调用setAdapter方法的时候进行一些变量初始化,然后调用requestLayout进行绘制,onMeasure方法计算视图的高度和宽度,onLayout方法绘制表格,表格的绘制原理,是将表格分为四个部分,左上角的一块,顶部的固定行,左侧的固定列,和滚动的数据主体,做法是将绘制出一个个格子,分别计算出位置,一个个放上去(其实就是绝对定位每个格子的位置)。

滚动的实现是在xml上设置android:scrollbars="horizontal|vertical",这样view在内容超过可视范围的时候出现滚动条,和scrollbar相关的方法有下面几个

1、computeHorizontalScrollExtent(computeVerticalScrollExtent),计算横向(纵向)滚动条的宽度

2、computeHorizontalScrollOffset(computeVerticalScrollOffset),计算横向(纵向)滚动条的偏移量

3、computeHorizontalScrollRange(computeVerticalScrollRange),计算横向(纵向)滚动条范围

作者覆盖上面这些方法的主要目的是显示滚动条的时候,只出现在数据主体部分,这样给人的感觉好像滚动的只有数据主体,滚动的方法主要是下面几个

1、scrollTo设置滚动到哪,debug的时候发现,好像没怎么调用

2、scrollBy根据传递进来的x,y值进行滚动计算将可视外的view放入recycle中,将可见的view从recycle中取出

3、onTouchEvent,通过监视手势来控制滚动(scrollby)。脉冲的滚动是通过velocityTracker类,监视移动速率,当速率超过设置的值得时候,调用flinger(自定义的类)开启异步线程滚动视图(scrollby)

 

转载于:https://www.cnblogs.com/tootwo2/p/6350278.html

你可能感兴趣的文章
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
MySQL服务读取参数文件my.cnf的规律研究探索
查看>>
java string(转)
查看>>
__all__有趣的属性
查看>>
写博客
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
ios封装静态库技巧两则
查看>>