Skip to content

Commit a647ab6

Browse files
committed
see the log
1 parent 164fa6c commit a647ab6

File tree

1 file changed

+100
-87
lines changed

1 file changed

+100
-87
lines changed

README.md

Lines changed: 100 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -485,129 +485,145 @@ public class MyClass {
485485

486486
### 4 资源文件规范
487487

488-
#### 4.1 资源布局文件(XML 文件(`layout` 布局文件))
488+
资源文件命名为全部小写,采用下划线命名法,之后出现的命名规则中,大括号中的为可选部分。
489489

490-
全部小写,采用下划线命名法。
491-
492-
##### 4.1.1 `contentView` 命名
493-
494-
必须以全部单词小写,单词间以下划线分割,使用名词或名词词组。
495-
496-
所有 `Activity``Fragment``contentView` 必须与其类名对应,对应规则为:将所有字母都转为小写,将类型和功能调换(也就是后缀变前缀)。
497-
498-
例如:`activity_main.xml`
499-
500-
501-
##### 4.1.2 `Dialog` 命名
502-
503-
规则:`dialog_描述.xml`
504-
505-
例如:`dialog_hint.xml`
506-
507-
508-
##### 4.1.3 `PopupWindow` 命名
509-
510-
规则:`ppw_描述.xml`
490+
如果想对资源文件进行分包可以参考我这篇文章:**[Android Studio 下对资源进行分包][Android Studio 下对资源进行分包]**
511491

512-
例如:`ppw_info.xml`
492+
#### 4.1 动画资源文件(`anim/``animator/`
513493

494+
安卓主要包含属性动画和视图动画,其视图动画包括补间动画和逐帧动画。属性动画文件需要放在 `res/animator/` 目录下,视图动画文件需放在 `res/anim/` 目录下。
514495

515-
##### 4.1.4 列表项命名
496+
命名规则:`{模块名_}逻辑名称`,例如:`refresh_progress.xml``market_cart_add.xml``market_cart_remove.xml`
516497

517-
规则:`item_描述.xml`
518-
519-
例如:`item_city.xml`
498+
如果是普通的补间动画或者属性动画,可采用如下表格中的命名方式:`动画类型_方向`
520499

500+
| 名称 | 说明 |
501+
| ----------------- | ------- |
502+
| `fade_in` | 淡入 |
503+
| `fade_out` | 淡出 |
504+
| `push_down_in` | 从下方推入 |
505+
| `push_down_out` | 从下方推出 |
506+
| `push_left` | 推向左方 |
507+
| `slide_in_from_top` | 从头部滑动进入 |
508+
| `zoom_enter` | 变形进入 |
509+
| `slide_in` | 滑动进入 |
510+
| `shrink_to_middle` | 中间缩小 |
521511

522-
##### 4.1.5 包含项命名
523512

524-
规则:`模块_(位置)描述.xml`
513+
#### 4.2 颜色资源文件(`color/`
525514

526-
例如:`activity_main_head.xml``activity_main_bottom.xml`
515+
专门存放颜色相关的资源文件。
527516

528-
注意:通用的包含项命名采用:`项目名称缩写_描述.xml`
517+
命名规则:`用途_逻辑名称`,例如:`sel_btn_font.xml`
529518

530-
例如:`xxxx_title.xml`
519+
说明:`用途` 也指控件类型(具体见附录[UI 控件缩写表](#ui-控件缩写表))。
531520

521+
颜色资源也可以放于 `res/drawable/` 目录,引用时则用 `@drawable` 来引用,但不推荐这么做,最好还是把两者分开。
532522

533-
#### 4.2 资源文件(图片 `drawable` 文件夹下)
534523

535-
全部小写,采用下划线命名法,加前缀区分
524+
#### 4.3 图片资源文件(`drawable/``mipmap/`
536525

537-
命名模式:可加后缀 `_small` 表示小图,`_big` 表示大图,逻辑名称可由多个单词加下划线组成,采用以下规则:
526+
`res/drawable/` 目录下放的是位图文件(.png、.9.png、.jpg、.gif)或编译为可绘制对象资源子类型的 XML 文件,而 `res/mipmap/` 目录下放的是不同密度的启动图标,所以 `res/mipmap/` 只用于存放启动图标,其余图片资源文件都应该放到 `res/drawable/` 目录下。
538527

539-
* `用途_模块名_逻辑名称`
540-
* `用途_模块名_颜色`
541-
* `用途_逻辑名称`
542-
* `用途_颜色`
528+
命名规则:`用途_{模块名_}逻辑名称``用途_{模块名_}颜色``用途_逻辑名称``用途_颜色`
543529

544-
说明:用途也指控件类型(具体见附录[UI 控件缩写表](#ui 控件缩写表))
530+
说明:`用途` 也指控件类型(具体见附录[UI 控件缩写表](#ui-控件缩写表),逻辑名称可由多个单词加下划线组成,最后可加后缀 `_small` 表示小图,`_big` 表示大图。
545531

546532
例如:
547533

548534
| 名称 | 说明 |
549535
| ----------------------- | ----------------------- |
550-
| `btn_main_home.png` | 按键 `用途_模块名_逻辑名称` |
551-
| `divider_maket_white.png` | 分割线 `用途_模块名_颜色` |
552-
| `ic_edit.png` | 图标 `用途_逻辑名称` |
553-
| `bg_main.png` | 背景 `用途_逻辑名称` |
536+
| `btn_main_about.png` | 主页关于按键 `用途_模块名_逻辑名称` |
537+
| `btn_back.png` | 返回按键 `用途_逻辑名称` |
538+
| `divider_maket_white.png` | 商城白色分割线 `用途_模块名_颜色` |
539+
| `ic_edit.png` | 编辑图标 `用途_逻辑名称` |
540+
| `bg_main.png` | 主页背景 `用途_逻辑名称` |
554541
| `btn_red.png` | 红色按键 `用途_颜色` |
555542
| `btn_red_big.png` | 红色大按键 `用途_颜色` |
556-
| `ic_head_small.png` | 小头像 `用途_逻辑名称` |
543+
| `ic_head_small.png` | 小头像图标 `用途_逻辑名称` |
557544
| `bg_input.png` | 输入框背景 `用途_逻辑名称` |
558545
| `divider_white.png` | 白色分割线 `用途_颜色` |
559-
| `bg_main_head` | 主模块头部背景图片 `用途_模块名_逻辑名称` |
560-
| `def_search_cell` | 默认搜索界面单元图片 `用途_模块名_逻辑名称` |
561-
| `ic_more_help` | 更多帮助图标 `用途_逻辑名称` |
562-
| `divider_list_line` | 列表分割线 `用途_逻辑名称` |
563-
| `sel_search_ok` | 搜索界面确认选择器 `用途_模块名_逻辑名称` |
564-
| `shape_music_ring` | 音乐界面环形形状 `用途_模块名_逻辑名称` |
546+
| `bg_main_head.png` | 主页头部背景 `用途_模块名_逻辑名称` |
547+
| `def_search_cell.png` | 搜索页面默认单元图片 `用途_模块名_逻辑名称` |
548+
| `ic_more_help.png` | 更多帮助图标 `用途_逻辑名称` |
549+
| `divider_list_line.png` | 列表分割线 `用途_逻辑名称` |
550+
| `sel_search_ok.xml` | 搜索界面确认选择器 `用途_模块名_逻辑名称` |
551+
| `shape_music_ring.xml` | 音乐界面环形形状 `用途_模块名_逻辑名称` |
565552

566-
如果有多种形态,如按钮选择器:`sel_btn_xx.xml`
553+
如果有多种形态,如按钮选择器:`sel_btn_xx.xml`,采用如下命名:
567554

568555
| 名称 | 说明 |
569556
| -------------------- | ---------------------------- |
570-
| `sel_btn_xx` | 按钮图片使用 `btn_整体效果`selector |
571-
| `btn_xx_normal` | 按钮图片使用 `btn_正常情况效果` |
572-
| `btn_xx_pressed` | 按钮图片使用 `btn_点击时候效果` |
557+
| `sel_btn_xx` | 作用在 `btn_xx` 上的 `selector` |
558+
| `btn_xx_normal` | 默认状态效果 |
559+
| `btn_xx_pressed` | `state_pressed` 点击效果 |
573560
| `btn_xx_focused` | `state_focused` 聚焦效果 |
574561
| `btn_xx_disabled` | `state_enabled` 不可用效果 |
575562
| `btn_xx_checked` | `state_checked` 选中效果 |
576563
| `btn_xx_selected` | `state_selected` 选中效果 |
577564
| `btn_xx_hovered` | `state_hovered` 悬停效果 |
578565
| `btn_xx_checkable` | `state_checkable` 可选效果 |
579-
| `btn_xx_activated` | `state_activated` 激活的 |
580-
| `btn_xx_window_focused` | `state_window_focused` |
566+
| `btn_xx_activated` | `state_activated` 激活效果 |
567+
| `btn_xx_window_focused` | `state_window_focused` 窗口聚焦效果 |
581568

582569
> 注意:使用 Android Studio 的插件 SelectorChapek 可以快速生成 selector,前提是命名要规范。
583570
584571

585-
#### 4.3 动画文件(`anim` 文件夹下
572+
#### 4.4 布局资源文件(`layout/`
586573

587-
全部小写,采用下划线命名法,加前缀区分。
574+
##### 4.4.1 `contentView` 命名
588575

589-
具体动画采用以下规则:`模块名_逻辑名称`
576+
必须以全部单词小写,单词间以下划线分割,使用名词或名词词组
590577

591-
例如:`refresh_progress.xml``market_cart_add.xml``market_cart_remove.xml`
578+
所有 `Activity``Fragment``contentView` 必须与其类名对应,对应规则为:将所有字母都转为小写,将类型和功能调换(也就是后缀变前缀)
592579

593-
普通的 `tween` 动画采用如下表格中的命名方式:`动画类型_方向`
580+
例如:`activity_main.xml`
594581

595-
| 名称 | 说明 |
596-
| ----------------- | ------- |
597-
| `fade_in` | 淡入 |
598-
| `fade_out` | 淡出 |
599-
| `push_down_in` | 从下方推入 |
600-
| `push_down_out` | 从下方推出 |
601-
| `push_left` | 推向左方 |
602-
| `slide_in_from_top` | 从头部滑动进入 |
603-
| `zoom_enter` | 变形进入 |
604-
| `slide_in` | 滑动进入 |
605-
| `shrink_to_middle` | 中间缩小 |
606582

583+
##### 4.4.2 `Dialog` 命名
584+
585+
规则:`dialog_描述.xml`
586+
587+
例如:`dialog_hint.xml`
588+
589+
590+
##### 4.4.3 `PopupWindow` 命名
607591

608-
#### 4.4 `values` 中 name 命名
592+
规则:`ppw_描述.xml`
593+
594+
例如:`ppw_info.xml`
609595

610-
##### 4.4.1 `colors.xml`
596+
597+
##### 4.4.4 列表项命名
598+
599+
规则:`item_描述.xml`
600+
601+
例如:`item_city.xml`
602+
603+
604+
##### 4.4.5 包含项命名
605+
606+
规则:`模块_(位置)描述.xml`
607+
608+
例如:`activity_main_head.xml``activity_main_bottom.xml`
609+
610+
注意:通用的包含项命名采用:`项目名称缩写_描述.xml`
611+
612+
例如:`xxxx_title.xml`
613+
614+
615+
#### 4.5 菜单资源文件(`menu/`
616+
617+
菜单相关的资源文件应放在该目录下。
618+
619+
命名规则:`{模块名_}逻辑名称`,例如:`main_drawer.xml``navigation_menu.xml`
620+
621+
622+
#### 4.6 values 资源文件(`values/`
623+
624+
`values` 资源文件下的文件都以 `s` 结尾,如 `attrs.xml``colors.xml``dimens.xml`,起作用的不是文件名称,而是 `<resources>` 标签下的各种标签,比如 `<style>` 决定样式,`<color>` 决定颜色,所以,可以把一个大的 `xml` 文件分割成多个小的文件,比如可以有多个 `style` 文件,如 `styles.xml``styles_home.xml``styles_item_details.xml``styles_forms.xml`
625+
626+
##### 4.6.1 `colors.xml`
611627

612628
`colors.xml``name` 命名使用下划线命名法,在你的 `colors.xml` 文件中应该只是映射颜色的名称一个 ARGB 值,而没有其它的。不要使用它为不同的按钮来定义 ARGB 值。
613629

@@ -653,7 +669,7 @@ public class MyClass {
653669
> 注意:如果某些颜色和主题有关,那就单独写一个 `colors_theme.xml`
654670
655671

656-
##### 4.4.2 `dimens.xml`
672+
##### 4.6.2 `dimens.xml`
657673

658674
像对待 `colors.xml` 一样对待 `dimens.xml` 文件,与定义颜色调色板一样,你同时也应该定义一个空隙间隔和字体大小的“调色板”。 一个好的例子,如下所示:
659675

@@ -684,7 +700,7 @@ public class MyClass {
684700
布局时在写 `margins``paddings` 时,你应该使用 `spacing_xx` 尺寸格式来布局,而不是像对待 `string` 字符串一样直接写值,像这样规范的尺寸很容易修改或重构,会使应用所有用到的尺寸一目了然。 这样写会非常有感觉,会使组织和改变风格或布局是非常容易。
685701

686702

687-
##### 4.4.3 `strings.xml`
703+
##### 4.6.3 `strings.xml`
688704

689705
`strings``name` 命名使用下划线命名法,采用以下规则:`模块名+逻辑名称`,这样方便同一个界面的所有 string 都放到一起,方便查找。
690706

@@ -699,9 +715,9 @@ public class MyClass {
699715
| `loading` | 加载文字 |
700716

701717

702-
##### 4.4.4 `styles.xml`
718+
##### 4.6.4 `styles.xml`
703719

704-
`style``name` 命名使用大驼峰命名法,几乎每个项目都需要适当的使用 `style` 文件,因为对于一个视图来说有一个重复的外观是很常见的,将所有的外观细节属性(`colors``padding``font`)放在 `style` 文件中。 在应用中对于大多数文本内容,最起码你应该有一个通用的 `style` 文件,例如:
720+
`style``name` 命名使用大驼峰命名法,几乎每个项目都需要适当的使用 `style` 文件,因为对于一个视图来说,有一个重复的外观是很常见的,将所有的外观细节属性(`colors``padding``font`)放在 `style` 文件中。 在应用中对于大多数文本内容,最起码你应该有一个通用的 `style` 文件,例如:
705721

706722
```
707723
<style name="ContentText">
@@ -721,19 +737,15 @@ public class MyClass {
721737
/>
722738
```
723739

724-
你或许需要为按钮控件做同样的事情,不要停止在那里。将一组相关的和重复 `android:xxxx` 的属性放到一个通用的 `style` 中。
725-
726-
**将一个大的 `styles.xml` 文件分割成多个文件**, 你可以有多个 `styles.xml` 文件。Android SDK 支持其它文件,`styles.xml` 这个文件名称并没有作用,起作用的是在文件里的 `<style>` 标签。因此你可以有多个 `style` 文件,如 `styles.xml``styles_home.xml``styles_item_details.xml``styles_forms.xml`。不同于资源文件路径需要为系统构建起的有意义,在 `res/values` 目录下的文件可以任意命名。
740+
或许你需要为按钮控件做同样的事情,不要停止在那里,将一组相关的和重复 `android:xxxx` 的属性放到一个通用的 `style` 中。
727741

728742

729-
#### 4.5 layout 中的 id 命名
743+
#### 4.7 id 命名
730744

731-
命名模式为:`view 缩写_模块名_逻辑名`,比如 `btn_main_search`
745+
命名规则:`view缩写_{模块名}_逻辑名`,例如: `btn_main_search``btn_back`
732746

733747
使用 Android Studio 的插件 ButterKnife Zelezny,生成注解非常方便,原生的话可以使用 Android Code Generator 插件。
734748

735-
如果想对资源文件进行分包可以参考我这篇文章:**[Android Studio 下对资源进行分包][Android Studio 下对资源进行分包]**
736-
737749

738750
### 5 版本统一规范
739751

@@ -980,7 +992,7 @@ AS 已帮你集成了一些注释模板,我们只需要直接使用即可,
980992

981993
## 附录
982994

983-
### UI控件缩写表
995+
### UI 控件缩写表
984996

985997
| 名称 | 缩写 |
986998
| -------------- | ---- |
@@ -1055,6 +1067,7 @@ AS 已帮你集成了一些注释模板,我们只需要直接使用即可,
10551067

10561068
## 版本日志
10571069

1070+
* 17/12/01: 对资源文件规范进行重构;
10581071
* 17/11/29: 格式化中英混排;
10591072
* 17/03/06: 发布初版;
10601073
* 17/03/07: 修订目录排版,完善某些细节;

0 commit comments

Comments
 (0)