为了搞一个完美的健身 APP,我真是费尽心机 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
litianyunq
V2EX    分享创造

为了搞一个完美的健身 APP,我真是费尽心机

  •  
  •   litianyun 173 天前 2196 次点击
    这是一个创建于 173 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为一个强迫症患者,当我需要一个简单、好用、流畅、无广告的健身记录软件时,撸铁记就诞生了。

    为什么我要开发撸铁记

    我应该是 2018 年接触健身的,那个时候我的教练每次给我上课,都会拿着一个文件夹记录我的每一次训练。但是纸制记录最大的问题是难保存,而且只能教练一个人看,于是我写了第一个健身记录软件,叫 FitnessRecord ,然后我就在知乎上分享了自己的应用,没想到真的有人用!

    后来,在朋友的撺掇下,我正式决定将撸铁记推上线,然后就是(巴拉巴拉极其费劲的上线了!)

    个人开发者有多痛苦

    一个完美的软件,最重要的,不仅要好看,还得好用,于是,就出现了下面这些设计

    暗黑模式

    一个 APP ,如果不支持暗黑模式,那你让强迫症怎么活?

    img正常模式 img暗黑模式

    但是...你以为这就完了吗?细节藏在魔鬼里

    绝对黑

    记得前两年各大手机厂商还在卷屏幕的时候,苹果率先推出了“绝对黑”,强调 OLED 屏幕通过像素关闭实现的物理级纯黑效果。so~为了实现在暗黑模式下,软件用的更爽,撸铁记的 APP 的背景色使用了#000000 ,也就是纯黑色 这样做的好处是在暗黑模式下,撸铁记可以与屏幕完美的融为一体。但是!问题来了。纯黑色真的很难设计,作为一个程序员出身的我,头发都抓掉了好几把。

    有细心的小伙伴们或许已经发现了,亮色模式下跟暗黑模式的主题色其实不是一个颜色

    img

    主题色对比

    我们发现在暗黑模式下,亮色模式下的主题色与黑色之间的对比度不够明显,导致整体色调暗沉,因此,亮色模式的主题色是:#3B7AEF 暗黑模式下则是:#2E6FEC

    虚拟导航键适配

    Android 的虚拟导航键如果适配不好,有多丑相信懂得都懂,为了能够在弹窗模式下也能够让弹窗与导航栏完美无瑕的融为一体,我设计了一个 BaseDialog ,专门用来管理弹窗状态,确保在任何页面,虚拟导航栏都不会影响到 APP 的整体颜值!

    img 左滑展示更多功能

    作为一个专业的记录软件,各种各样的功能总要有吧?

    全部堆叠到更多菜单中是不是很傻?如果在屏幕排列出来展示是不是更傻?所以,左滑删除这种很合理的交互是不是得有?

    IOS 设备是常态,但是能够完美的搬到 Android 机器上,该怎么做?鸿蒙系统又该怎么适配?!

    但是!我说的是但是,为了更漂亮的 UI ,更合理的交互,我又熬了个通宵,最终完美解决!

    img

    好的交互就得多看,多学

    每个人的习惯都不同,比如有的用户希望能够在倒计时 120s 之后有一个声音提示,有的则希望可以按照训练顺序,对卡片自动排序,那么问题来了,这些功能又该堆叠在哪里呢?

    我的灵感来源是一款不太出名的 P 图软件

    在训练详情页面的左侧,有一根很不起眼的线,当你触摸这条线的时候,就会弹出训练设置的总菜单啦!(不用担心很难触摸,我已经将触摸范围调整到了最合适的大小,既不会误触,也不会很难点)

    img菜单功能

    其实,APP 还有很多为了“好看”而做的设计,但是一个好的 APP ,只是静态的好看怎么能行!

    完美的入场动效

    我该如何像您吹嘘这系统级的丝滑动效?请看 VCR: https://www.bilibili.com/video/BV1sbKGzCExr?t=0.0 https://www.bilibili.com/video/BV1PbKGzCEyT?t=0.0

    如何?是否足够丝滑???

    当然,功能性才是核心

    除了记录的易用性和强大复杂的功能,为了能够 360° 覆盖健身所需要的所有场景,我还开发了各种各样的功能

    赛博智能

    赛博智能,我希望这个功能可以像赛博机器人一样,对我的身体状况进行 360° 评估。

    鄙人不才,晒一下我的身体状态评估分析:

    img赛博智能

    一个超级大长图,几乎涵盖了你想要知道的一切~当然,后续还会继续丰富其他功能

    日历统计

    这个月你偷懒了吗 是的,你的每一滴汗水,都会浓缩破到这一张小小的日历表格中,如果你偷懒了,那就是一张空空的日历,那么,你会努力填满每一天的,对吧?

    img

    最后的最后

    按原本的计划,我想要从设计到功能,认真的介绍一下撸铁记的所有方方面面,但是回头看看,文章真的太长了,所以,就留一点悬念给大家,希望需要的小伙伴自行探索

    其实,每一个细节,我都改过很多次,后续依旧会不断的改来改去,因为我只想要最好~

    最后,祝愿所有喜欢健身的朋友,都可以收获自己成功~

    新人第一次在 V2EX 发布文章,不知道图片链接怎么放,请多多包涵

    11 条回复    2025-09-18 11:18:37 +08:00
    Rainwater
        1
    Rainwater  
       173 天前
    图全裂了
    followad
        2
    followad  
       173 天前 via iPhone
    我有一个想法
    AaronPeng
        3
    AaronPeng  
       172 天前
    @followad 撸管记?
    followad
        4
    followad  
       172 天前 via iPhone
    我觉得加上某个器械或者姿势的训练注意事项或者易错点会比较不错,受众会更广,还可以添加上某个训练动作哪个地方疼痛对应的自检方法和康复技巧
    followad
        5
    followad  
       172 天前 via iPhone
    @AaronPeng 这样看来还是你比较有想法啊
    litianyunq
        6
    litianyunq  
    OP
       172 天前
    @epicSoldier 是啊,不知道怎么搞,我一会儿再研究研究
    litianyunq
        7
    litianyunq  
    OP
       172 天前
    @followad 现在是用 AI 生成的,但是效果不太好,后续会优化
    MrVito
        8
    MrVito  
       171 天前
    有句老生常谈的话:你这款产品和训记比,有啥优势?
    ShaoLongFei
        9
    ShaoLongFei  
       171 天前
    @AaronPeng 你他娘的还真是一个人才
    vipviphaha
        10
    vipviphaha  
       103 天前
    安装一个测试测试
    litianyunq
        11
    litianyunq  
    OP
       101 天前
    @vipviphaha 感谢支持
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1057 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:38 PVG 07:38 LAX 15:38 JFK 18:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86