Skip to main content

android-dimen-dp-sp

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

소스 정보

저장소
afkT/DevUtils
최근 소스 활동
2026년 5월 3일 15:48
감지된 SKILL.md 언어
중국어
스타
1,613
포크
316

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
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 未定义统一资源名:先向用户确认或按项目已有约定处理。
GitHub에서 보기