Skip to content

Han1meAndroid-v1.6.0

Choose a tag to compare

@Amisles Amisles released this 20 Oct 14:03
· 72 commits to main since this release

新增 Added

  • 界面定制页:新增独立的界面定制入口,可实时调整全局字号、缩略图宽高比、卡片圆角、列表缩略图宽度、栅格目标列宽与每区显示条数,并以示例卡片实时预览效果,每一项均可单独重置
  • 图片解码质量档:省流 / 标准 / 高清三档,按实际显示尺寸的倍数解码 —— 省流档降低内存与流量占用
  • 首页分区级布局与顺序:每个分区可单独设为自动 / 列表 / 网格 / 横滑四种形态,并支持上移下移调整分区顺序
  • 界面配置导入导出:整套界面配置编码为文本,支持复制导出与粘贴导入
  • 下载管理页按文件名搜索:已下载任务支持按文件名即时本地过滤,输入即生效、不触发任何网络请求
  • 全局点击反馈:以状态层(按压 / 悬停 / 聚焦叠色)替代此前被全局关闭的涟漪效果,全应用可点区域恢复点击反馈
  • 默认下载目录改为公共 Download/Hanime:原目录位于 Android/data/<包名>/files/Downloads,现落在公共下载目录下的 Hanime 子文件夹,无需存储权限,主外部存储不可写时自动退回应用外部目录
  • 首页大图整图可点:移除大图底部的「播放」按钮,点击整张图即进入详情,有直链时直接播放、无直链退回按标题搜索

改进 Improved

  • 设置页改为分组容器:由 8 个各自独立的卡片改为 3 个分组容器(外观 / 下载 / 网络与数据),组内以细分隔线区隔,并抽出共享的设置行组件
  • 缩略图不再触发布局期子组合:列表项中的缩略图此前用 BoxWithConstraints 取尺寸,会在布局阶段额外跑一次子组合;改为由调用方传入已知宽度、在组合期算出解码尺寸
  • 首页分区计划预计算:首页的分块与列表键改为随分区计划一次算好并缓存,不再每次重组时重建
  • 列表复用按类型匹配:首页列表的各类条目补齐 contentType,避免结构不同的条目共用同一复用槽导致复用失效
  • 骨架屏不再逐帧重组:加载骨架的闪烁动画改为在绘制阶段读取动画值,不再每帧重组整块骨架
  • 移除图片淡入:去掉全局 crossfade,避免快速滚动时大量缩略图同时淡入造成叠加开销
  • 占位图与 emoji 清理:无封面时的「渐变 + emoji」占位改为单色底;界面中的 emoji(点赞、清除、空态插画、未登录头像)全部替换为矢量图标
  • 图标族与尺寸规范:统一图标族用法,图标尺寸收敛到 16 / 20 / 24 三档
  • 中文字距归零:去掉排版中照搬拉丁排版的正字距,中文不再显得松散
  • 详情页与播放器首帧开销:降低进入详情页时的主线程占用,页面切换更跟手
  • 下载引擎结构拆分:下载管理器按职责拆分为分块引擎、单连接引擎、位图持久化与调参常量等独立文件
  • 网络请求重试策略:移除自建的 GET 重试拦截器,改由 OkHttp 内置的连接失败重试承担
  • 工具链与依赖升级:目标 SDK 提升至 Android 17(API 37),Kotlin 2.4.21、AGP 9.4.1、Compose BOM 2026.09.00,其余依赖同步至最新稳定版
  • 列表卡片高度恒定:三种卡片的标题区固定为两行高、文字在两行内垂直居中,长短标题不再让同排卡片一高一低,单行标题也不会在标题与作者之间留出空档
  • 多列布局缩略图等比缩放:平板 / 折叠屏的多列布局下缩略图此前固定 150dp,会把文字区压到不足 10dp;现按列宽等比缩小,文字区恢复可读
  • 搜索框统一重构:搜索页与下载页的搜索框抽出为同一个组件,圆角与卡片刻度统一、搜索图标内嵌、取消独立提交按钮,输入区可用宽度提升约 16%
  • 搜索页更紧凑:垂直间距累计由 84dp 降至 46dp;排序按钮宽度随文字自适应,右侧不再固定留出空档
  • 排序下拉与按钮融为一体:按钮与下拉菜单拼成同一个矩形(同宽、同底色、同描边、接缝处为直角),下拉自按钮底边向下垂直展开、收起时反向缩回
  • 搜索历史改标签贴片:由整行列表改为可自动换行的矩形贴片,每个贴片内嵌删除按钮,点贴片即搜索
  • 下载完成项整卡点击播放:移除单独的播放按钮,点击卡片任意位置即进入播放;缩略图放大 40% 并改为 16:9 比例
  • 首页首次滑动掉帧:分区数据原为「解析一条推送一条」,一次加载会触发最多 10 次整页重建;改为合并提交后降至 2-3 次,进入首页立即滑动时的卡顿明显缓解
  • 跨模块列表卡片可跳过重组:领域模型声明为稳定类型后,内容未变的列表项在重组时不再重绘
  • 系统栏不再随每次重组重设:状态栏 / 导航栏配色改为仅在主题真正变化时执行
  • 批量下载页搜索框落位固定:搜索框改为 topBar 第二行的静态控件,与搜索页同款、占满整行,点击不再移动,空态提示 / 作者信息 / 视频列表从同一位置开始
  • 模块依赖方向倒置:仓储接口下沉到 domain 模块,feature-* 与 app 对 :data 的依赖由 22 处降为 0 处,各功能模块只面向接口编程
  • 播放器与下载页结构拆分:播放器手势判定抽为无副作用的纯类并补齐单元测试,倍速 / 清晰度浮层、播放器纯组件、下载列表项依次独立成文件;SearchScreen 由 1578 行拆为 6 个文件
  • CI 与测试补齐:流水线加入 ProGuard 规则扫描、Lint 与完整测试报告,并补充下载位图、文件名处理、界面配置编解码等单元测试

修复 Fixed

  • 单连接续传可能产出「能播但花屏」的文件:续传走追加写,隐含要求「文件长度恰好等于续传点」,而分块写入是稀疏的,文件可能比续传点更长;此前会把后续数据整体写错偏移,且收尾校验只看长度下界,静默产出损坏文件。现续传前显式把文件截断到续传点,起点越界时显式失败而不是继续按错偏移写入
  • 单连接下载流中断:新增限次重试续传,弱网下不再一次中断即失败
  • 下载完成校验:由「长度不小于预期」收紧为「长度全等」,残缺文件不再被标记为已完成
  • 离开详情页时最终播放进度丢失:保存动作原本在 viewModelScope 已取消后发起,实际从未执行;改为等一帧后在页面自身作用域内保存,既避开取消,也不在 release() 调用栈里触发数据库往返
  • 关于页仓库地址:由旧名 HanimeAndroid 更正为实际使用的 Han1meAndroid
  • 下载前台服务崩溃:收敛 startForeground 调用,系统拒绝进入前台时不再崩溃
  • 下载通知权限:补齐 Android 13+ 通知权限的运行时申请
  • 点击下载通知不再清空导航栈:通知跳转改为复用已有任务,不再重建整个导航栈
  • 主题偏好落盘:改回异步写入,不再在主线程同步写加密存储
  • 首页分类跳转错位:分类跳转的索引计入「刷新失败提示行」,跳转位置不再偏移一行
  • 底部导航点击当前 Tab 闪烁:统一 Tab 切换入口,重复点击当前页不再闪烁
  • 占位配色退化:统一占位取色函数,修正负 hashCode 取模导致的取色退化
  • 网络层缓存与日志:移除业务网络层不再需要的 50MB 磁盘 HTTP 缓存,并清理历史残留缓存目录(旧缓存可能含带登录态的明文页面);清理网络层调试日志,统一异常语义
  • 点击状态层的两处可见缺陷:筛选弹窗的遮罩与被用于拦截点击的容器不再出现点击叠层;圆角按钮上的叠层不再溢出成方角
  • 定制页字号提示不可见:区间提示误用了只应用于边框与分隔线的颜色 token,改为正文前景色
  • 进页瞬间闪现空态提示:进入搜索页会先显示「输入关键词,或选择分类 / 标签 / 日期 / 时长开始搜索」再切成搜索历史;收藏、历史、订阅页同样会先弹「暂无内容」再切加载圈。现区分「尚未加载」与「确实为空」,不再闪现
  • 网格卡作者名点击热区过大:热区原本铺满整行,按压时出现一条横贯卡片的灰带;现贴合文字本身
  • 排序下拉选项折行:选项文字因菜单宽度不足被压成两行;调整菜单宽度与内边距后恢复单行

补充信息

  • 完整 diff 对比:v1.5.0...v1.6.0
  • 版本号:versionCode 13 / versionName 1.6.0,最低支持 Android 11(API 30)
  • CI:SDK 平台升至 android-37,构建工具 36.0.0
  • 若本项目对你有帮助,欢迎在仓库右上角点一个 ⭐ Star,这是对开发者最大的鼓励与支持