有什么方式可以全屏播放照片,让手机、电脑等设备变成你的画框?设为壁纸?可问题是,桌面上总有图标,还有状态栏。满屏的图标、状态栏根本关不掉,画面被遮挡得细碎。
使用手机自带的图库功能?长宽比不匹配就会出现黑边。想铺满屏幕?你得手动两指缩放、对齐。更烦的是,一旦切换下一张,比例又乱了。
这个 PWA 应用只解决一件事: 丢掉所有 UI 和状态栏。不管原图什么比例,强制全屏铺满,不留任何空白。打开它,你的手机就是一块纯粹的画布。
Aether Frame (以太画框)
Slogan: 拾起旧时光,捕捉流动的静谧。
一、 产品定位
Aether Frame 是一款极简主义的离线优先 PWA 应用。它旨在将你的闲置手机、平板或显示器转化成一个专业级的数字画框。不同于传统社交媒体的短视频冲击,它专注于高质量影像的沉浸式沉浸与物理空间的氛围营造。
二、 核心产品特性
1. 真正的“全屏”沉浸视觉 (Edge-to-Edge Experience)
- 零黑边自适应:利用智能裁剪算法,确保媒体素材无论原始比例如何,均能 100% 填充屏幕,彻底消除视觉上的碎裂感。
- 系统级深度沉浸:基于 PWA 技术,一键覆盖系统状态栏与导航栏,让硬件边框成为照片唯一的边界。
2. 跨时空的“私人策展” (Curated Collections)
- 云端与本地的桥梁:支持通过 URL 列表批量导入高清图库或视频流,同时提供本地持久化下载功能,将在线资源转化为离线资产。
- 视听一体化配置:每个合集可独立绑定背景音乐(BGM),支持音画同步播放。通过预设的淡入淡出动效,让每一次切换都像艺术展般的优雅。
3. 智能场景感知 (Context Awareness)
- 设备定向筛选:系统自动识别屏幕方向。手机端优先展示纵向(Portrait)美学,Pad/PC 端自动过滤并展示横向(Landscape)大片,确保最佳视觉构图。
- 性能平衡设计:针对旧设备优化,在保证全画质输出的同时,通过合理的缓存机制减少能耗与发热。
4. 数据主权与隐私 (Privacy First)
- 本地存储哲学:所有导入的媒体信息及配置均存储在用户本地的 IndexedDB 中,不上传云端,不追踪行为。应用即工具,而非监控者。
三、 核心使用场景
- 旧机焕新:让抽屉里吃灰的旧 iPhone/安卓机变成书桌上的动态艺术品。
- 氛围营造:在办公、冥想、瑜伽或阅读时,播放森林雨声视频或极简风光图集,构建专属的专注力场。
- 数字记忆墙:在家庭聚会或节日期间,作为照片流播放器,展示珍贵的家庭合集。
四、 设计风格 (Design Philosophy)
延续 DESIGN.md 的极简工业风:
- UI 隐形化:操作界面仅在交互时浮现,平时将 100% 的像素交给内容。
- 微动效交互:遵循“少即是多”的原则,切换逻辑平滑,拒绝任何生硬的转场和视觉干扰。
五、 商业与传播价值
- PWA 轻量化:无需通过应用商店下载,扫码即用,支持跨平台(iOS, Android, Windows, macOS)一致体验。
- 合集分享生态:用户分享的不仅仅是一个 URL 列表,而是一个包含审美倾向、音乐品味和节奏感官的“艺术包”。
开发记录
添加在子路径下子应用,这是一个让手机变成画框的应用(名字我还没想好)。主要是用来全屏展示图片、视频等,反对刷屏,让用户沉浸式放松。这个全屏指的是覆盖状态栏,媒体是覆盖整个屏幕的,屏幕没有不显示照片的区域,不会因为图片尺寸而有空白。我会预设一组照片和视频,还要支持视频和图片的导入导出(数据存储在本地),也要支持逐项添加,添加时可能需要区分视频和图片?,用户可以创建合集,导入 url 列表(导入的媒体必须是已经托管在服务器且可以跨域访问的媒体资料。),程序解析媒体信息,存储 url 和基本信息。
展示的媒体支持幻灯片播放,还要能够播放背景音乐。这些都支持配置。
合集中包含背景音乐信息。也是可跨域访问的 url。合集可以被分享。,还要有一个下载器功能,能够讲这些资料下载后保存到本地。图片和视频要存储其一些基本信息,比如是横向还是竖向。默认电脑只展示横向图片,手机只展示竖向图片。 要沿用项目中的 i18n。界面风格延续 DESIGN.md
预设的图片:
https://sns-img-hw.xhscdn.com/1040g2sg31vb2od2eigig49hqb6r9oqipn7p382o?imageView2/2/w/0/format/jpghttps://sns-img-hw.xhscdn.com/1040g00831v8tecps400048vkvchr2h06ovuhin8https://sns-img-hw.xhscdn.com/1040g2sg315gq059hgu705o02t9cg9fbm4q1tdu0?imageView2/2/w/0/format/jpg
视频:
https://sns-bak-v1.xhscdn.com/stream/79/110/258/01e9b6684748e3564f0370019cf0878414_258.mp4https://sns-bak-v1.xhscdn.com/stream/1/110/258/01e7b0029e5634ab0103700195078da37f_258.mp4
音频你自己找好了。
- 幻灯片播放要有过渡动画等,要优化用户体验。确保技术先进性,有成熟先进的库的话,优先用库。还存在问题:幻灯片播放视频没有声音,播放幻灯片时,下一个是视频的情况下,视频无法切换,无法下一个,indicator 是动的,但视频不动。幻灯片播放的时候,以及其他相关场景,如有 dialog 时,要 Lock 住 body,不能有滚动条。
- 技改:整个应用其实基本都是前端本地应用,利用「软导航(Soft Navigation)」拆分页面,模态框的开关、应用的选择等,交给 URL 来控制。而其他真正的 “全局状态”由、 zustand 做全局状态管理。每一个应用有一个全局状态。 /frame 下是一个单独应用。
- 原则被违反了,一个是不能真正全屏了(媒体覆盖满屏幕,不出现任何黑边),另一个是现在媒体的查看有两套体系了。有 Gallery 里面 ynrl 的(这个还存在问题——点击删除之后的弹窗会被 lightbox 挡住),也有full 里面。我们自研的这一套,我觉得合为一体吧,抽出一个基础组件。都用 ynrl,另外还要支持下滑关闭(就是那种大幅度上滑、或者下滑就缩小,关闭灯箱),同时界面风格使用 full 里面的样子,但是都搞成“真全屏”,只是 gallery 里面偏向于管理,有更多的功能。结合这个文章(这个文章是不全的),再根据你对整个应用的理解,写 frame 这个应用的 readme.md ,要言之有物。
getOrientationFromUrl 不对。要先判断出是视频还是图片,视频也应该能检测出方向的。
