# HappyBrowser **Repository Path**: xkx1029/HappyBrowser ## Basic Information - **Project Name**: HappyBrowser - **Description**: 一款基于 MVVM + Jetpack Compose 的 Android 智能浏览器,集成 Bing 普通搜索和双 AI 智能检索 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-01 - **Last Updated**: 2026-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HappyBrowser / 开心浏览器 一款基于 **MVVM + Jetpack Compose** 的 Android 浏览器,采用 **GeckoView + WebView 双内核架构**,以 Material 3 Expressive 视觉标准打造,并融入独特的 **液态玻璃(Liquid Glass)物理特效**。底部导航栏设计参考夸克浏览器风格。 --- ## 功能特性 ### 双内核架构 | 内核 | 说明 | |------|------| | **GeckoView** | Mozilla 内核,主渲染引擎,支持硬件加速与桌面模式 | | **WebView** | Chromium 内核,兼容模式,支持一键切换与自动降级 | - **智能内核调度**:`EngineScheduler` 根据网页类型自动选择内核算力 - **自动降级**:Gecko 渲染异常时自动切换至 WebView,对用户透明 - **多引擎适配层**:`GeckoEngineAdapter`、`WebViewEngineAdapter` 统一接口 ### 液态玻璃 UI(Liquid Glass) - **折射效果**:冷色到暖色的渐变折射,模拟光线穿过玻璃 - **虚拟成像**:柔和白色反向渐变,模拟景深虚像 - **高光描边**:可调高光与描边,增强玻璃质感 - 可复用 Modifier,支持自定义圆角、透明度、高光/描边开关 ### 多标签页管理 - 支持新建、切换、关闭标签页,标签页计数实时显示 - **网址栏左右滑动切换标签**:右滑切下一标签,左滑切上一标签(80dp 阈值防误触) - 标签页列表页(`TabListPage`)概览管理 - **智能冻结/回收**:后台自动冻结非活跃标签,低内存自动回收,回收后仅保留元数据 ### 核心浏览能力 - **Bing 普通搜索**:Bing 前两页结果去重合并,网页卡片形式展示 - **搜索历史**:DataStore 持久化,编辑态展示建议面板(收藏 + 历史) - **书签管理**:收藏网页、书签管理页面 - **阅读模式**:自动提取网页正文,纯净阅读体验,支持**导出 .docx 文档** - **桌面模式**:一键切换桌面版网站 - **下载支持**:网页内容下载监听 - **页内查找**:页内关键字查找 ### 深度设置 - **引擎设置**:默认引擎、强制 WebView、自动降级、自定义 User-Agent - **标签页管理**:冻结/回收时间、标签上限、后台自动冻结 - **网页显示**:JavaScript、图片加载、弹窗拦截、文本缩放 - **隐私与缓存**:无痕模式、退出清除数据、广告拦截 - **性能优化**:硬件加速、Session 预热池、低内存自动回收、磁盘缓存上限 ### 视觉与体验 - **Material 3 Expressive UI**:完整 M3 色彩体系,支持深色/浅色主题、主题色自定义、Dynamic Color - **液化玻璃特效**:折射 + 虚像 + 高光,悬浮层质感 - **流畅动画**:自定义 Ease 曲线、页面过渡动画、下拉刷新、骨架屏 - **全屏浏览**:edge-to-edge 沉浸式网页显示,底部工具栏更透明减少遮挡 --- ## 技术架构 ### 分层架构 ``` UI 表现层 ── Compose Activity/WebView/StateFlow │ ViewModel 层 ── ViewModel + 协程 + StateFlow │ Repository 层 ── SearchRepo │ Data 层 ── Retrofit + OkHttp / DataStore / Gson 实体 │ 公共工具层 ── 网页清洗 / 错误码映射 / 网络工具 / DOCX 导出 ``` ### 技术栈 | 类别 | 技术 | |------|------| | 语言 | Kotlin | | UI 框架 | Jetpack Compose + Material 3 Expressive | | 架构模式 | MVVM | | 浏览器内核 | GeckoView(Mozilla)+ WebView(Chromium)双内核 | | 网络请求 | Retrofit + OkHttp | | 网页解析 | Jsoup | | 本地存储 | DataStore Preferences | | 导航 | Navigation Compose | | 数据序列化 | Gson | | 图片加载 | Coil | | 标签管理 | 自研 TabManager 多标签页管理 | ### 项目结构 ``` app/src/main/java/com/happy/browser/ ├── data/ │ ├── api/ # 网络接口定义(ApiClient) │ ├── engine/ # 双内核引擎层(GeckoEngineAdapter, WebViewEngineAdapter, EngineScheduler, GeckoRuntimeManager, MemoryManager) │ ├── local/ # 本地配置存储(ConfigStore) │ └── model/ # 数据模型(Models, BrowserSettings) ├── repository/ # 仓库层(SearchRepo) ├── ui/ │ ├── components/ # UI 组件(LiquidGlass, PullToRefresh, Shimmer) │ ├── navigation/ # 导航图(AppNavGraph) │ ├── pages/ # 核心页面 │ │ ├── HomePage.kt # 首页搜索页 │ │ ├── BrowserPage.kt # 浏览器主页面(底部导航 + 网址栏) │ │ ├── SearchResultsPage.kt # 搜索结果页 │ │ ├── BookmarksPage.kt # 书签管理页 │ │ ├── ReadingPage.kt # 阅读模式页(支持导出 DOCX) │ │ ├── SettingsPage.kt # 设置页面 │ │ └── TabListPage.kt # 标签页列表页 │ └── theme/ # Material 3 Expressive 主题(Color, Theme, Type, Animation) ├── util/ # 工具类(HtmlCleaner, ErrorHandler, NetworkUtil, DocxExporter) ├── viewmodel/ # ViewModel(SearchViewModel) ├── HappyBrowserApp.kt # 应用入口(GeckoRuntime 提前初始化) ├── TabManager.kt # 多标签页管理器 └── MainActivity.kt # 入口 Activity ``` --- ## 快速开始 ### 环境要求 - Android Studio Hedgehog (2023.1.1) 或更高版本 - JDK 17 - Android SDK 36 - Gradle 8.x - Kotlin 2.0 ### 构建与运行 ```bash # 克隆仓库 git clone https://github.com/xkx121029/HappyBrowser.git cd HappyBrowser # 使用 Android Studio 打开项目 # 或通过命令行构建 ./gradlew assembleDebug ``` ### 版本说明 - `versionCode` 每次构建自动递增 1 - `versionName` 遵循 `1.0.年.月.日` 格式(如 `1.0.2026.08.09`) - Release 构建仅打包 `arm64-v8a` 架构以减小 APK 体积,启用 R8 混淆与资源压缩 --- ## 页面预览 | 页面 | 说明 | |------|------| | **首页搜索页** | 搜索输入框、搜索历史建议面板、收藏入口、主题切换 | | **浏览器主页面** | 底部圆角胶囊网址栏(锁图标 + URL编辑 + 刷新)+ 导航栏 | | **搜索结果页** | Bing 搜索结果卡片列表 | | **书签管理页** | 已收藏网页列表,支持添加/删除书签 | | **标签页列表页** | 多标签页概览与切换 | | **阅读模式页** | 纯净阅读视图,支持导出 .docx | | **设置页面** | 引擎/标签页/显示/隐私/性能等全局设置 | --- ## 更新日志 ### v2.1.0 (versionCode 78) - 2026-08-09 **液态玻璃 UI 与纯浏览器化重构** - **移除 AI 功能**:删除心流检索、LLM、SSE 流式解析、AI 配置/解读页面及关联仓库,回归专注的普通浏览体验 - **液态玻璃物理特效**:新增 `LiquidGlass.kt`,实现折射(冷→暖渐变)、虚拟成像(柔和白色反向渐变)、高光描边三层叠加效果 - **移除标签栏**:删除 `TabStrip`,保留标签页管理,改为网址栏左右滑动切换标签 - **网址栏滑动切换**:右滑切下一标签、左滑切上一标签,80dp 阈值防误触,带边界保护 - **全屏沉浸显示**:底部渐变透明度降低至 0.80,增加网页可见区域,edge-to-edge 全屏浏览 - **工具栏精简**:网址胶囊高度 40→36dp、导航栏 56→48dp、按钮 40→36dp,总高度约 391→245px - **新增标签列表页**:`TabListPage` 多标签页概览管理 - **阅读模式导出 DOCX**:`DocxExporter` 零依赖生成 OOXML 文档,经 MediaStore 保存至下载目录 - **应用级初始化**:`HappyBrowserApp` 在 Application 阶段提前初始化 GeckoRuntime,缩短冷启动;仅主进程初始化 Gecko 与内存管控器 - **页面加载状态隔离**:加载进度与状态独立组件,避免加载期间整页重组 - **深度设置页面**:引擎、标签页、网页显示、隐私、性能等全量配置 ### v2.0.0 (versionCode 24) - 2026-08-04 **重大 UI 重构与双内核升级** - **浏览器页面布局重构**:将网址栏从顶部移至底部,采用底部导航栏设计(参考夸克浏览器风格) - **底部网址栏**:圆角胶囊形状设计,包含安全锁图标、URL 显示/编辑框、刷新按钮 - **底部导航栏**:5 个核心按钮 - 后退、前进、新建标签页、标签页计数显示、多功能菜单 - **多功能菜单**:整合收藏/书签、网页分享、页内查找、桌面模式切换、阅读模式、引擎切换、关闭标签页等功能 - **双内核架构升级**:正式集成 GeckoView(Mozilla Firefox 内核)+ WebView(Chromium 内核),支持智能调度与一键切换 - **新增引擎适配层**:GeckoEngineAdapter、WebViewEngineAdapter、EngineScheduler 引擎调度器、GeckoRuntimeManager 运行时管理 - **多标签页管理**:新增 TabManager 标签页管理器,支持标签页新建、切换、关闭、计数 - **书签功能**:新增 BookmarksPage 书签管理页面,支持收藏网页和书签管理 - **设置页面**:新增 SettingsPage 全局设置页面 - **阅读模式**:新增 ReadingPage 纯净阅读视图,自动提取网页正文 - **新增 UI 组件**:PullToRefresh 下拉刷新、Shimmer 骨架屏、TabStrip 标签条 - **版本号**:versionCode 更新为 24 --- ## 拓展规划 - [ ] 多搜索引擎支持 - [ ] 网页缓存功能 - [ ] 历史记录本地管理 - [ ] 多语言支持 --- ## 贡献指南 欢迎提交 Issue 和 Pull Request 来帮助改进这个项目。在提交 PR 之前,请确保: 1. 代码风格与现有代码保持一致 2. 新功能包含适当的错误处理 3. 提交信息清晰描述改动内容 --- ## 开源协议 本项目基于 [MIT License](LICENSE) 开源。 --- ## 致谢 - [Mozilla GeckoView](https://mozilla.github.io/geckoview/) - Mozilla 浏览器内核 - [Jetpack Compose](https://developer.android.com/compose) - Android 现代 UI 工具包 - [Material 3](https://m3.material.io) - Material Design 3 设计系统 - [Bing](https://www.bing.com) - 搜索引擎