Skip to content

feat: add categorized settings with Jetpack Compose - #19

Open
fython wants to merge 2 commits into
mainfrom
feat/settings-categories
Open

fython wants to merge 2 commits into
mainfrom
feat/settings-categories

Conversation

@fython

@fython fython commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

设置原本集中在 Activity 的长页面中,通过程序化 View 拼接布局、绑定控件状态和事件。此 PR 将设置改为 Jetpack Compose 分类首页与九个二级页,并把页面、状态与平台操作分开。

  • 九个分类各有独立的 Screen 文件,共用 Material 3 设置行、开关、选择器、文本编辑及确认弹窗;返回按钮固定在顶栏,长页面可以直接返回。
  • SettingsViewModel 负责偏好持久化与 StateFlow 状态;SavedStateHandle 保存分类和各页滚动位置。切换底部标签、配置变化和 Activity 重建时恢复当前位置,状态更新无需重建整页 View。
  • DiPlayActivity 协调文件选择、权限、CarPlay 重连和 Web 服务更新,通过明确的 actions / effects 接入界面。安全区域预览、热点配置、浏览器设备管理,以及证书密码/条目选择均使用 Compose 弹窗。
  • 保留认证资源激活门禁、APK 导入、OEM 自定义、音频/麦克风、定位、串流、Web 监听及 Tesla Root/VPN 设置行为。热点名称和密码保留空格,密码与待导入资源不进入保存的页面状态,取消证书导入时清理临时数据。
  • 设置静态文案提取至资源文件,补充 Compose Preview、状态恢复及 Compose 语义交互测试,更新开发说明。

验证:

  • :shared:testDebugUnitTest :common:testDebugUnitTest:704 项测试通过(shared 419 / common 285)。
  • :mobile:lintDebug :mobile:assembleDebug:通过;Lint 无错误,保留 18 条警告。
  • 已检查 320dp 大字体、360dp 手机和 800dp 横屏截图。
  • 输入弹窗测试使用 Robolectric 默认显示宽度,避免其自定义宽度下的弹窗测量问题;不同尺寸的页面布局另有截图覆盖。

尚未进行真机验证。

@fython fython changed the title feat: organize settings into categorized pages feat: add categorized settings with Jetpack Compose Oct 15, 2026
@xiwangly2

Copy link
Copy Markdown

看起来不错(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants