From 84d6a8fea9d0f6696c702ab5c921508bdd1a6e3f Mon Sep 17 00:00:00 2001 From: xiaji Date: Tue, 3 Mar 2026 22:11:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0README=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=8B=BC=E5=9B=BE=E5=B8=83=E5=B1=80=E6=8A=80=E6=9C=AF=E8=A7=84?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 93 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 04a6771..3ed5ffc 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@ CheckShot 是一个面向 Android 的图片处理与检查工具,包含水印处理、拼图合成、以及丰富的设置能力,配合 AirTest 自动化测试用例,帮助实现端到端的图像工作流。 -核心功能 +## 核心功能 + - 水印设置 - 时间水印:拍摄后在左下角叠加时间戳,格式固定为 "yyyy年-MM月-dd日 HH:mm:ss"。 - 地点水印:优先通过 Geocoder 联网解析地址,失败时回落显示经纬度。可在设置中配置校准方式。 @@ -16,27 +17,112 @@ CheckShot 是一个面向 Android 的图片处理与检查工具,包含水印 - 测试与自动化 - 集成 AirTest 测试用例,覆盖水印、相册、拼图、设置等场景,便于回归验证。 -架构与实现要点 +--- + +## 通用拼图布局组件技术规格 + +### 1. 逻辑结构 + +采用“上-中-下”三段式布局: + +``` +┌─────────────────────────┐ +│ 标题区 (Title) │ 高度自适应,支持 1 行文本 +├─────────────────────────┤ +│ │ +│ 图片网格区 │ 2x2 或 3x3 栅格布局 +│ (Grid Area) │ +│ │ +├─────────────────────────┤ +│ 底部文字区 (Text) │ 200dp 高度,包含标题+内容 +└─────────────────────────┘ +``` + +### 2. 核心布局参数化 + +| 参数 | 说明 | 当前值 | +|------|------|--------| +| Grid_Columns | 列数 | 2 或 3 | +| Grid_Rows | 行数 | 2 或 3 | +| S | 单元格间距 | 4dp | +| P | 容器内边距 | 16dp | + +布局模板自动匹配:根据图片数量自动选择最接近的栅格模板。 + +### 3. 内容渲染规则 + +- **标题区**:位于顶部,高度自适应,支持 1 行文本 +- **图片网格区**:位于栅格正下方,由图片组成 +- **内容区**:位于底部,由 Title(加粗)和 Content(常规)组成 + +--- + +### 4. 缩放算法规格 + +#### 等比缩放 (Proportional Scaling) + +- 锁定原始宽高比,严禁 X 或 Y 轴独立拉伸 +- 计算缩放比例:`k = max(Wt / W_orig, Ht / H_orig)` + +其中: +- `Wt` = 目标单元格宽度(物理像素) +- `Ht` = 目标单元格高度(物理像素) +- `W_orig` = 原始图片宽度 +- `H_orig` = 原始图片高度 + +#### 填充模式 + +- **Aspect Fill**:图片须完全覆盖单元格区域,不允许出现留白(Gap-free) + +#### 采样策略 + +- **下采样 (Downsampling)**:针对大图缩小,采用双线性(Bilinear)过滤,避免出现锯齿或摩尔纹 + +#### 对齐规则 + +- **Center Aligned**:初始加载时,图片几何中心与单元格几何中心重合 + +#### 分辨率限制 + +- **Max DPI 限制**:缩小后的图片逻辑像素密度不低于 320dpi,确保在高分屏下的视觉清晰度 + +--- + +### 5. 布局通用适配规则 + +1. 系统根据当前选定的布局模板(2x2 或 3x3),计算出单个单元格的目标物理像素 (Wt, Ht) +2. 原始图片输入后,自动计算缩放比例 k = max(Wt/W_orig, Ht/H_orig) +3. 图片按 k 倍数进行等比缩小 +4. 缩小后的图片根据单元格中心进行溢出裁切,确保视觉上的严丝合缝 + +--- + +## 架构与实现要点 + - Watermark:时间文本来自系统时间,地点文本通过 LocationHelper/Geocoder 获取。 - Puzzle:通过 Bitmap 拼接与 Canvas/Matrix 实现多种布局,支持图片替换、删除与质量控制。 - Settings:使用 DataStore 保存用户偏好。 -快速开始 +## 快速开始 + - 构建与运行 - 构建调试 APK:`./gradlew assembleDebug` - 在设备/模拟器上安装:`adb install -r app/build/outputs/apk/debug/app-debug.apk` - AirTest 测试 - - 运行测试用例(需安装 AirTest 及依赖):`airtest run test/airtest/... --device Android:///` + - 运行测试用例(需安装 AirTest 及依赖):`airtest run test/airtest/... --device Android:///` + +## 项目结构与升级 -项目结构与升级 - 主要代码位于: - app/src/main/... 业务代码与 UI 组件 - app/src/test/... 单元测试 - test/airtest/... AirTest 的 UI 测试用例 - README 作为版本演进的记录,后续变更请同步更新。 -持续集成与发布 +## 持续集成与发布 + - 建议在 CI 中执行:编译、单元测试、AirTest 测试并在通过后打包发行版。 -联系与贡献 +## 联系与贡献 + - 如需进一步定制文档结构,或需要将某些部分拆分为单独的开发指南,请告知偏好。