diff --git a/README.md b/README.md index fb5688e..c290c3b 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,52 @@ # WouoUI -模仿稚晖君MonoUI风格的超丝滑菜单,支持128×64和128×32两种主流OLED分辨率,使用EC11旋转编码器控制。 -UI示例来自我的另一个开源项目,未作修改,原项目:https://github.com/RQNG/Rapid-trigger-minipad +模仿稚晖君MonoUI风格的超丝滑菜单,使用EC11旋转编码器控制。 +有四个版本,适配三种固定分辨率的屏幕,以及一种仅保留列表和弹窗相关代码,支持任意行高,任意字高,任意屏幕分辨率的通用版本。 +* 128_128版本:基本上复刻了UltraLink的界面。 +* 128_64版本:在128_128版本的基础上,重新设计主界面和电压测量界面,适配了列表,关于本机界面改为列表类。 +* 128_32版本:在128_64版本的基础上,重新设计主界面和电压测量界面。 +* 通用版本:仅保留列表类和弹窗代码,主菜单改为列表类。注意,所有版本的列表类代码都相同,适配了屏幕高度与行高度不能整除的情况,只需要简单定义好参数,适用与参数匹配的字体和屏幕即可适配所有情况,自带一套超窄行高度的参数用于测试。 # 功能 -* 休眠模式扫描,同时可旋转旋钮控制电脑音量或亮度 -* 休眠模式下点按旋钮停止扫描,进入主菜单 -* 支持列表和图标两种模式的主菜单风格 -* 主菜单下,旋转旋钮滚动列表,点按选择列表 -* 列表长度无限制 -* 每种动画速度都分别可调,值10 - 90,值越小速度越快 -* 更多功能请参考原项目 +* 全部使用非线性的平滑缓动动画,包括列表,弹窗,甚至进度条 +* 优化平滑动画算法到只有两行,分类别定义平滑权重,并且每个权重值都分别可调 +* 可以打断的非线性动画,当前动画未结束但下一次动画已经被触发时,动画可以自然过渡 +* 非通用版本分别适配了类似 UltraLink 主菜单的磁贴界面(因为让我想起 WP7 的 Metron 风格,所以称之为磁贴) +* 通用版本仅保留列表类界面,经过简单修改可以适配所有分辨率的屏幕,包括屏幕内行数不是整数的情况 +* 列表菜单,列表可以无限延长 +* 列表文字选择框,选择框可根据选择的字符串长度自动伸缩,进入菜单时从列表开头从长度 0 展开,转到上一级列表时,长度和纵坐标平滑移动到上一级选择的位置 +* 列表单选框,储存数据时也储存该值在列表中所在的位置,展开列表时根据每行开头的字符判断是否绘制外框,再根据位置数据判断是否绘制里面的点 +* 列表多选框,储存数据的数组跟多选框列表的行数对应,不要求连续排列,展开列表时根据每行开头的字符判断是否绘制外框,再根据行数对应的储存数据位置的数值是否为1判断是否绘制里面的点 +* 列表显示数值,与多选框原理相似,但不涉及修改操作 +* 列表展开动画,初始化列表时,可以选择列表从头开始展开,或者从上次选中的位置展开 +* 图标展开动画,初始化磁贴类界面时,可以选择图标从头开始展开,或者从上次选中的位置展开 +* 弹出窗口,实现了窗口弹出的动画效果,可以自定义最大值,最小值,步进值,需要修改的参数等,窗口独立运行,调用非常简单 +* 弹出窗口背景虚化可选项,背景虚化会产生卡顿感,但删掉代码有些可惜,因此做成可选项,默认关闭 +* 亮度调节,在弹出窗口中调节亮度值可以实时改变当前亮度值 +* 旋钮功能,使用EC11旋钮控制,旋钮方向可以软件调整,内置一个USB控制电脑的示例,在睡眠模式下旋转调整音量或者亮度,短按输入一个键值,长按进入主菜单,旋钮消抖时长等参数可以在弹出窗口中调整 +* 循环模式,选择项超过头尾时,选择项跳转到另一侧继续,列表和磁贴类可以分别选择 +* 黑暗模式,其实本来就是黑暗模式,是增加了白天模式,默认开启黑暗模式 +* 消失动画适配两种模式,一种是渐变成全黑,另一种渐变成全白 +* 断电存储,用简单直观的方式将每种功能参数写入EEPROM,只在修改过参数,进入睡眠模式时写入,避免重复擦写,初始化时检查11个标志位,允许一位误码 # 效果 -用原项目演示效果: - ![屏幕截图 2023-03-31 232407](https://user-images.githubusercontent.com/115459678/229332057-3c852d57-b65b-4569-892e-b52042440bdf.png) +* 128_128版本: +![image](https://github.com/RQNG/WouoUI/assets/115459678/0da977bc-5a8f-42f3-bbcc-3ce90da6027b) +演示视频:https://www.bilibili.com/video/BV1Ao4y147La -视频:https://www.bilibili.com/video/BV1Hv4y1V7Zu/ +* 128_64版本: +![image](https://github.com/RQNG/WouoUI/assets/115459678/65437f96-5c1b-46bd-a198-558a0de811e3) +演示视频:https://www.bilibili.com/video/BV1CL41187da/ + +* 128_32版本: +![image](https://github.com/RQNG/WouoUI/assets/115459678/77ce9c6b-2dcd-4bb9-8d59-f6beeb959015) +演示视频:https://www.bilibili.com/video/BV1Ss4y1D72s/ + +* 通用版本: +![image](https://github.com/RQNG/WouoUI/assets/115459678/0fae540a-bc7e-43e0-8936-60f22ae3733f) +演示视频:https://www.bilibili.com/video/BV1wo4y1474K/ # 参考 * 旋钮:https://zhuanlan.zhihu.com/p/453130384 -* UI:https://www.bilibili.com/video/BV1HA411S7pv/ ; https://www.bilibili.com/video/BV1xd4y1C7BE/ +* B站:路徍要什么自行车:在线仿真:https://wokwi.com/projects/350306511434547796,https://www.bilibili.com/video/BV1HA411S7pv/ +* Github:createskyblue:OpenT12:https://github.com/createskyblue/OpenT12 +* Github:peng-zhihui:OpenHeat:https://github.com/peng-zhihui/OpenHeat