FunnyTimeLine是我第二个开源的自定义View(第一个FunnyUnlockView见这里),本质上是一个时间轴样式的时间选择器。
成品
因图片过大,请点击该页面查看
(因GIF压缩问题,此处展示的图片并不清晰且卡顿,建议您下载demo自行体验)
特点
该View具有以下特点:
- 三级惯性滑动:对 低中高 三种速度提供了三种惯性滑动,使用起来更加流畅自然
- 动态生成图像:基于数据实时生成当前绘制图像(而不是全部绘制后区域加载)
- 双缓冲绘图:基于内存画布+真实画布绘制,降低真实绘制次数,减少频闪
使用
引入包
- build.gradle添加implementa
maven { url "https://jitpack.io" }
- 引入依赖
implementation 'com.github.FunnySaltyFish:FunnyTimeLine:1.0.0'
使用FunnyTimeLine
支持Java代码和xml两种方式
代码 | 属性 | 解释 |
---|---|---|
getTimeData() | 无 | 返回与View关联的TimeData(解释见下) |
setTimeData(TimeData) | 无 | 设置与View关联的TimeData |
getLightColor() | lightColor | 获取浅颜色(见图) |
setLightColor(Color color) | lightColor | 设置浅颜色 |
getNormalColor() | normalColor | 获取普通颜色(见图) |
setNormalColor(Color color) | normalColor | 设置普通颜色 |
getStressColor() | stressColor | 获取强调颜色(见图) |
setStressColor(Color color) | stressColor | 设置强调颜色 |
getShowNums() | showNums | 获取当前横轴一共显示多少个数字。(奇数) |
setShowNums(int) | showNums | 设置显示数字 |
getTimeKind() | timeKind | 获取当前更改的时间单位(0:秒,1:分,2:小时) |
setTimeKind(short) | timeKind | 设置时间单位 |
setFPS(int) | 无 | 设置View更新的理论帧率(实际帧率会小于该值) |
setTimeMS(int) | time | 设置时间轴当前的时间 (以毫秒为单位) |
解释
TimeData
- TimeData是FunnyTimeLine中管理时间的类,每个View持有一个TimeData,View读取它的数据显示
- 内部有int h, int min, int s, int ms四个变量分别表示小时、分钟、秒、毫秒
- 提供了一些用于操作时间的方法
颜色图示![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8bcbd2beb468fece0fdbb4af3da8c15b.jpeg#pic_center)
地址
github:FunnyTimeLine
gitee:FunnyTimeLine
- app/ 为示例项目
- library/ 为源代码