接口说明:
为其实现View 添加滚动(scroll)相关的APIs
抽象函数一览:
//第一组,水平滚动相关
int computeHorizontalScrollRange();
int computeHorizontalScrollOffset();
int computeHorizontalScrollExtent();
//第二组,垂直滚动
int computeVerticalScrollRange();
int computeVerticalScrollOffset();
int computeVerticalScrollExtent();
正名·概念网络
——理解所需明晰的概念
- 滚动条·scrollbar:略
- 范围·range:整个滚动视图的总长度
- 滑块·thumb:略
- 偏移量·offset:距离起点的距离·长度
- 大小或区间·extent:可视区域的长度
正名·概念关系
- 范围=子view长度相加+总空隙长度
- 滑块处于顶部时,偏移量=0
- 滑块处于底部时,偏移量+可视区域(extent)=范围
第一组,水平滚动 相关函数
int computeHorizontalScrollRange();
水平方向上,计算滚动条表示的范围。
范围可以用任意单位计量,但必须与其他函数所用单位一致:
(computeHorizontalScrollOffset(); computeHorizontalScrollExtent();
)
默认范围:是此视图的绘图宽度。
返回值:滚动条表示的总范围
int computeHorizontalScrollOffset();
水平方向上,计算滚动条滑块在滚动条范围中的偏移量。此值用于计算滑块在轨道中的位置
范围所用单位需与其它函数一致。
默认偏移量:是此视图滚动的偏移量。
返回值:滑块的偏移量
int computeHorizontalScrollExtent();
水平方向上,计算滑块在滚动条范围中的大小。此值用于计算滑块在轨道中所占的长度(可视区域长度)
范围所用单位需与其它函数一致。
默认大小:是此视图的绘图宽度。
返回值:滑块的大小(可视区域长度)
第二组,垂直滚动 相关函数
方向改为垂直,其余同上
例子
RecyclerView
ListView
...
通常为带有滑动功能的ViewGroup,都实现了此接口