Skip to main content

android-dimen-dp-sp

将布局与代码中的硬编码 dp、sp 改为引用 @dimen/dp_*、@dimen/sp_* 与 R.dimen.*; 资源名规则为整数部分与一位小数部分用下划线连接(如 12.5 → dp_12_5)。 在用户要求去掉魔法数、统一 dimen、替换 dp/sp 字面量或规范化尺寸引用时使用。

Quellinformationen

Repository
afkT/DevUtils
Letzte Quellaktivität
3. Mai 2026 um 15:48
Erkannte Sprache von SKILL.md
Chinesisch
Sterne
1.613
Forks
315

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
android-dimen-dp-sp
description
将布局与代码中的硬编码 dp、sp 改为引用 @dimen/dp_*、@dimen/sp_* 与 R.dimen.*; 资源名规则为整数部分与一位小数部分用下划线连接(如 12.5 → dp_12_5)。 在用户要求去掉魔法数、统一 dimen、替换 dp/sp 字面量或规范化尺寸引用时使用。
# Android:硬编码 dp / sp → `@dimen/dp_*`、`@dimen/sp_*` ## 何时用本 Skill - 用户要把 **XML / Kotlin / Java** 里写死的 **`Ndp` / `Nsp`** 或等价的 dp、sp 数值,改成 **dimen 引用**。 - **不要**去仓库里搜索、推断或校验 `values/dimens.xml` 是否已有对应项:**默认视为已存在**,直接按规则写出 `@dimen/...` 与 `R.dimen....`。 ## 命名规则(核心) 1. **前缀**:物理长度用 `dp_`,文字尺寸用 `sp_`。 2. **有小数时**:`整数部分` + `_` + `小数点后那一位数字`(仅 **一位** 小数参与命名)。 - 小数部分命名里的 `_` **表示小数点**,不是第二个「任意分隔符」。 3. **一位小数的得出方式**(与「12.5555 → dp_12_5」一致):**截断**到小数点后一位(丢弃第二位及以后),**不**按四舍五入成 12.6。 4. **无小数(整数)时**:`dp_12`、`sp_8`,**不要**写成 `dp_12_0`(除非用户项目已有该风格再跟随项目)。 | 原始数值(dp 或 sp,单位一致即可) | 资源名(dp 示例) | XML 引用 | 代码引用 | | :--- | :--- | :--- | :--- | | 0.5 | `dp_0_5` | `@dimen/dp_0_5` | `R.dimen.dp_0_5` | | 12.5 | `dp_12_5` | `@dimen/dp_12_5` | `R.dimen.dp_12_5` | | 12.5555 | `dp_12_5`(先截断为 12.5) | `@dimen/dp_12_5` | `R.dimen.dp_12_5` | | 12 | `dp_12` | `@dimen/dp_12` | `R.dimen.dp_12` | `sp` 同理:`12.5sp` → `@dimen/sp_12_5`、`R.dimen.sp_12_5`。 ## 从字面量到资源名的算法(给 Agent 执行用) 对某个 **dp 或 sp** 的数值 `v`(只看数字部分): 1. 若 `v` 为整数(或可视为整数):资源名为 `dp_<整数>` 或 `sp_<整数>`。 2. 若 `v` 有小数部分:将 `v` **截断**到小数点后一位得到 `v'`,拆成整数部分 `a` 与一位小数数字 `b`(`b` 为 0–9),资源名为 `dp_<a>_<b>` 或 `sp_<a>_<b>`。 - 例:`v = 12.5555` → `v' = 12.5` → `a = 12`, `b = 5` → `dp_12_5`。 - 例:`v = 0.5` → `v' = 0.5` → `dp_0_5`。 ## XML 写法 - 将 `android:padding="12.5dp"`、`tools:layout_margin="8sp"` 等中的 **字面量** 改为 **`@dimen/dp_12_5`**、**`@dimen/sp_8`** 等形式;**不要**在属性值里再保留 `dp`/`sp` 后缀(dimen 条目自身已带单位语义)。 - 若原先是 `tools:` 或 `app:` 等命名空间,只替换尺寸字面量部分,其余属性名与命名空间不变。 ## Kotlin / Java 写法 - 需要 **资源 id** 时:`R.dimen.dp_12_5`、`R.dimen.sp_8` 等,与上述命名一致。 - 取像素时仍按项目惯例使用 `resources.getDimension(R.dimen.dp_12_5)` 等;本 Skill 只规定 **资源名与引用形式**,不规定用 px 还是 dp 的封装工具类。 ## 注意 - **只改 dp/sp 到 dimen 的映射与引用**;不要顺带「优化」无关布局、不要擅自新建 `dimens.xml` 条目(除非用户明确要求创建资源文件)。 - 负值、表达式(如 `10dp+2dp`)若出现,本 Skill 未定义统一资源名:先向用户确认或按项目已有约定处理。
Auf GitHub ansehen