← 全部作品

Android · Flutter

古典时钟Classical Clock

手机上的时钟大多是同一个样子。这个项目想试另一种:把一天放回十二时辰里,让时间有方向、有脏腑、有节气——二十四小时才走完一圈。

Android 7 以上,已正式签名。安装包偏大是因为 Flutter 运行时,功能本身完全离线。

形态
Android App(iOS 规划中)
框架
Flutter 3.47 · Dart
表盘
全自绘 CustomPainter
特色
真太阳时 · 桌面小组件

它是什么

一块按传统历法与养生逻辑组织的表盘。中央是太极,外圈按同心环排布二十四小时刻度、十二地支、子午流注的脏腑与经络、二十四节气、天干与后天八卦。

每一圈都可以单独开或关,也可以拖动改顺序——有人只要一个素雅的时钟,有人希望抬眼就能看见「现在是未时,小肠经当令」。同一块表,两种用法。

十二点在上,是钟表;子时在上,是时辰。这个选择交给你。

朝向可换:午时在上符合现代钟表与洛书「戴九履一」,子时在上更接近十二时辰的原始方位。换朝向时,八卦、地支、节气会一起转,不会错位。

功能

二十四小时一圈

时针二十四小时转一圈,而不是十二小时绕两圈。一天在表盘上只走一次,昼夜不会被折叠。

太极居中

矢量绘制,默认固定不旋转,也可以退成整盘背景水印。中心留白,才有地方落墨。

可定制的同心环

十二时辰、子午流注(脏腑 / 经络 / 养生建议)、二十四节气、天干、后天八卦、时辰刻度——逐环开关,拖拽调序。

四种预设

素雅(只留时辰与刻度)、养生(子午流注为主)、历法(节气天干八卦齐全)、极简(只有三针)。切换即生效。

真太阳时校正

按所在地经度修正平太阳时差,时辰落在正确的位置上。开启时才请求一次定位权限,也可以手填经度。

知识卡片

表盘下方横滑:当前与下一时辰、今日节气、十二时辰速查、传统小知识。卡片可上下翻页,小知识会缓缓轮播。

桌面小组件

把配置好的表盘渲染成 1024px 图推到桌面,叠加实时三针。整块组件可点开 App,开机、改时间、升级后自动重设。

全屏与主题

双击表盘进入沉浸式全屏,可缩放平移;素雅、仿古、夜览三套配色,秒针支持扫秒、跳秒与隐藏。

技术上怎么画的

整个表盘没有一张图片,全是 CustomPainter 逐帧绘制:背景、暗角、当前时辰扇区与外圈红弧、内容环、环分隔、外沿、太极、三根锥形指针。所以它在任何分辨率下都清晰,换主题也只是换一组颜色常量。

地支格线只画在与十二时辰同构的环带上——八卦、节气、天干、刻度环的等分不同,硬画格线会错位。这类「看起来只是少画一笔」的判断,其实决定了表盘是不是经得起看。

小组件的走时是一个独立的原生问题:秒针开启且亮屏时用链式闹钟每秒刷新,熄屏自动退回分钟级省电;Android 12 以上需要「闹钟和提醒」权限才能精确走时,没授权会退化成九分钟一跳,设置页会直接告诉你原因并给一个跳转按钮。

已知的不足

节气用平均间隔近似,年中会有两三天的误差,接入农历库之后可以精确化。 iOS 的桌面小组件还没做,需要原生 WidgetKit 扩展,排在后面。表盘字体优先走系统楷体,不同机型观感会有细微差别。

这些不是待办清单上的装饰,是写在这里让你知道边界在哪——一个工具知道自己哪里不准,比假装什么都准更可靠。