android-dimen-dp-sp

star 1.6k

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

afkT By afkT schedule Updated 5/3/2026

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_12sp_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_5R.dimen.sp_12_5

从字面量到资源名的算法(给 Agent 执行用)

对某个 dp 或 sp 的数值 v(只看数字部分):

  1. v 为整数(或可视为整数):资源名为 dp_<整数>sp_<整数>
  2. v 有小数部分:将 v 截断到小数点后一位得到 v',拆成整数部分 a 与一位小数数字 bb 为 0–9),资源名为 dp_<a>_<b>sp_<a>_<b>
    • 例:v = 12.5555v' = 12.5a = 12, b = 5dp_12_5
    • 例:v = 0.5v' = 0.5dp_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_5R.dimen.sp_8 等,与上述命名一致。
  • 取像素时仍按项目惯例使用 resources.getDimension(R.dimen.dp_12_5) 等;本 Skill 只规定 资源名与引用形式,不规定用 px 还是 dp 的封装工具类。

注意

  • 只改 dp/sp 到 dimen 的映射与引用;不要顺带「优化」无关布局、不要擅自新建 dimens.xml 条目(除非用户明确要求创建资源文件)。
  • 负值、表达式(如 10dp+2dp)若出现,本 Skill 未定义统一资源名:先向用户确认或按项目已有约定处理。
Install via CLI
npx skills add https://github.com/afkT/DevUtils --skill android-dimen-dp-sp
Repository Details
star Stars 1,600
call_split Forks 317
navigation Branch main
article Path SKILL.md
Occupations
More from Creator