统一 Android XML 资源命名:layout、drawable、mipmap、color、values、id 的前缀与 snake_case 规则;把颜色/圆角/描边/状态编码进文件名(bg_、border_、text_color_…_selector)。 生成 selector 与 ColorStateList 时多状态写入单个文件、内联 shape、默认项放最后、按真实颜色 hex 命名(如 text_color_333333_ffffff_selector)。在用户要求命名或重命名资源文件、生成 selector / state color / shape / ripple / layer-list drawable、整理布局 id、 规范 colors/dimens/styles 命名时使用。
80
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
让新建的 layout、drawable、mipmap、color、values 资源命名一致、可预测、可被工具校验。本 Skill 自包含,不依赖任何外部文档;全量表格、示例与反例见 references/reference.md。
name。@+id/、colors、dimens、styles 的命名。layout/、drawable/、color/、mipmap/、anim/…目录下文件)只能用小写 a-z、数字 0-9、下划线 _;大写、空格、连字符、中文都非法。drawable/、mipmap/、layout/、values/、color/、anim/、menu/、xml/、raw/、font/…),不能放 res/ 根,也不能自造目录基名。- 追加到目录基名(drawable-night-hdpi、values-zh-rCN、layout-land),并按官方优先级排序;目录不可嵌套。限定符顺序见 references/reference.md。snake_case(全小写下划线)。values/ 值名(name="...")统一 snake_case(btn_submit、dp_12、color_0088ff);仅 style / theme 用 PascalCase + 点分(Theme.App、Widget.App.Button.Primary)。activity_、item_、ic_、bg_…)。res-<module>/),文件名以模块/功能域起头(main_tab_*、learning_word_*)规避跨模块同名。各类型的前缀表与 name 规则(layout / drawable 两族 / colors / dimens / styles / ids)见 references/reference.md。
按用途二选一,全表见 references/reference.md § drawable 命名:
ic_*、btn_*、divider_*、<module>_..._selector(内部用 @mipmap/@drawable 切换状态)。bg_<color1>[_<color2>][_<alphaPercent>][_r<radius>][_border[_<borderColor>]][_w<width>]_<suffix>
border_<strokeColor>[_<alphaPercent>]_r<radius>[_w<width>]
text_color_<color1>_<color2>[_..]_selector#(ffffff、0088ff);按真实颜色取值,即使引用的是短别名(@color/color_33 仍写 333333)。第 1 个 = 默认/normal 态,第 2 个 = 激活态。_<百分比>(_40 = 40% 不透明)。圆角:r<dp>,小数用 _(r2_5 = 2.5dp,r50 = 胶囊)。描边:border/border_<色>、线宽 w<dp>。后缀:selector/shape/gradient。随状态变化的 背景 / 文本色 / 图标 必须用 一个 selector 或 ColorStateList 文件表达全部 state。禁止拆成 xxx_normal.xml + xxx_pressed.xml + xxx_selector.xml。
规则:
<item> 内联 <shape>(corners/solid/stroke),不外链多个 shape 文件。state_checked/state_pressed/state_selected/state_focused…),无 state 的默认项放最后兜底。bg_ffffff_0088ff_r5_selector;文本色如 text_color_333333_ffffff_selector。背景 selector 范式(单文件、内联 shape、默认项在最后):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<shape>
<corners android:radius="@dimen/dp_5" />
<solid android:color="@color/color_0088ff" />
</shape>
</item>
<item android:state_selected="true">
<shape>
<corners android:radius="@dimen/dp_5" />
<solid android:color="@color/color_0088ff" />
</shape>
</item>
<item>
<shape>
<corners android:radius="@dimen/dp_5" />
<solid android:color="@color/color_ffffff" />
</shape>
</item>
</selector>文本色 ColorStateList 范式(res/color/ 下,默认项在最后):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_checked="true" />
<item android:color="@color/white" android:state_pressed="true" />
<item android:color="@color/white" android:state_focused="true" />
<item android:color="@color/white" android:state_selected="true" />
<item android:color="@color/color_33" />
</selector>能不建文件就不建,优先复用工程现成能力:
Round* 的 app:dev_*);复杂多态/渐变才写 drawable。ShadowLayout 的 app:hl_*)。ColorStateList。@dimen/dp_*、@dimen/sp_*。确需新建时,再按上文命名族与单文件整合规则落地。
color_<hex6>[_<alphaPercent>];尺寸 dp_*/sp_*。3fa9400
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.