TimeRuleView
时间尺控件
(仿“萤石云视频”里的时间选择控件)
功能:
- 可选择一天(00:00 ~ 24:00)内的任一时刻,精确到秒级
- 可显示多个时间块
- 支持滑动及惯性滑动
- 支持缩放时间间隔
- 支持滑动与缩放的连续切换
思路:
- 时间绘制思路参考
RuleView
- 时间缩放,采用缩放手势检测器 ScaleGestureDetector
- 缩放的等级估算方式:进入默认比例为1,根据每隔所占的秒数与宽度,可估算出每个等级的宽度范围,再与默认等级对应的宽度相除,即可算出缩放比例
- 惯性滑动,使用速度追踪器 VelocityTracker
- 缩放与滑动之间的连续操作,ScaleGestureDetector 开始与结束的条件是第二个手指按下与松开,
所以onTouchEvent()中应该使用 getActionMasked()来监听第二个手指的 DOWN(ACTION_POINTER_DOWN) 与 UP(ACTION_POINTER_UP) 事件,
MOVE 都是一样的
- 时间块,由起始时间与终止时间组成,采用一个有序的集合来装入即可
Author: Ralap
Description:
Date 2018/8/11