@@ -485,129 +485,145 @@ public class MyClass {
485
485
486
486
### 4 资源文件规范
487
487
488
- #### 4.1 资源布局文件(XML 文件( ` layout ` 布局文件))
488
+ 资源文件命名为全部小写,采用下划线命名法,之后出现的命名规则中,大括号中的为可选部分。
489
489
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 下对资源进行分包 ] ** 。
511
491
512
- 例如: ` ppw_info.xml `
492
+ #### 4.1 动画资源文件( ` anim/ ` 和 ` animator/ ` )
513
493
494
+ 安卓主要包含属性动画和视图动画,其视图动画包括补间动画和逐帧动画。属性动画文件需要放在 ` res/animator/ ` 目录下,视图动画文件需放在 ` res/anim/ ` 目录下。
514
495
515
- ##### 4.1.4 列表项命名
496
+ 命名规则: ` {模块名_}逻辑名称 ` ,例如: ` refresh_progress.xml ` 、 ` market_cart_add.xml ` 、 ` market_cart_remove.xml ` 。
516
497
517
- 规则:` item_描述.xml `
518
-
519
- 例如:` item_city.xml `
498
+ 如果是普通的补间动画或者属性动画,可采用如下表格中的命名方式:` 动画类型_方向 ` 。
520
499
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 ` | 中间缩小 |
521
511
522
- ##### 4.1.5 包含项命名
523
512
524
- 规则: ` 模块_(位置)描述.xml `
513
+ #### 4.2 颜色资源文件( ` color/ ` )
525
514
526
- 例如: ` activity_main_head.xml ` 、 ` activity_main_bottom.xml `
515
+ 专门存放颜色相关的资源文件。
527
516
528
- 注意:通用的包含项命名采用: ` 项目名称缩写_描述 .xml`
517
+ 命名规则: ` 用途_逻辑名称 ` ,例如: ` sel_btn_font .xml` 。
529
518
530
- 例如: ` xxxx_title.xml `
519
+ 说明: ` 用途 ` 也指控件类型(具体见附录 [ UI 控件缩写表 ] ( #ui-控件缩写表 ) )。
531
520
521
+ 颜色资源也可以放于 ` res/drawable/ ` 目录,引用时则用 ` @drawable ` 来引用,但不推荐这么做,最好还是把两者分开。
532
522
533
- #### 4.2 资源文件(图片 ` drawable ` 文件夹下)
534
523
535
- 全部小写,采用下划线命名法,加前缀区分
524
+ #### 4.3 图片资源文件( ` drawable/ ` 和 ` mipmap/ ` )
536
525
537
- 命名模式:可加后缀 ` _small ` 表示小图, ` _big ` 表示大图,逻辑名称可由多个单词加下划线组成,采用以下规则:
526
+ ` res/drawable/ ` 目录下放的是位图文件(.png、.9.png、.jpg、.gif)或编译为可绘制对象资源子类型的 XML 文件,而 ` res/mipmap/ ` 目录下放的是不同密度的启动图标,所以 ` res/mipmap/ ` 只用于存放启动图标,其余图片资源文件都应该放到 ` res/drawable/ ` 目录下。
538
527
539
- * ` 用途_模块名_逻辑名称 `
540
- * ` 用途_模块名_颜色 `
541
- * ` 用途_逻辑名称 `
542
- * ` 用途_颜色 `
528
+ 命名规则:` 用途_{模块名_}逻辑名称 ` 、` 用途_{模块名_}颜色 ` 、` 用途_逻辑名称 ` 、` 用途_颜色 ` 。
543
529
544
- 说明:用途也指控件类型 (具体见附录[ UI 控件缩写表] (#ui 控件缩写表))
530
+ 说明:` 用途 ` 也指控件类型 (具体见附录[ UI 控件缩写表] ( #ui- 控件缩写表 ) ),逻辑名称可由多个单词加下划线组成,最后可加后缀 ` _small ` 表示小图, ` _big ` 表示大图。
545
531
546
532
例如:
547
533
548
534
| 名称 | 说明 |
549
535
| ----------------------- | ----------------------- |
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 ` | 主页背景 ` 用途_逻辑名称 ` |
554
541
| ` btn_red.png ` | 红色按键 ` 用途_颜色 ` |
555
542
| ` btn_red_big.png ` | 红色大按键 ` 用途_颜色 ` |
556
- | ` ic_head_small.png ` | 小头像 ` 用途_逻辑名称 ` |
543
+ | ` ic_head_small.png ` | 小头像图标 ` 用途_逻辑名称 ` |
557
544
| ` bg_input.png ` | 输入框背景 ` 用途_逻辑名称 ` |
558
545
| ` 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 ` | 音乐界面环形形状 ` 用途_模块名_逻辑名称 ` |
565
552
566
- 如果有多种形态,如按钮选择器:` sel_btn_xx.xml `
553
+ 如果有多种形态,如按钮选择器:` sel_btn_xx.xml ` ,采用如下命名:
567
554
568
555
| 名称 | 说明 |
569
556
| -------------------- | ---------------------------- |
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 ` 点击效果 |
573
560
| ` btn_xx_focused ` | ` state_focused ` 聚焦效果 |
574
561
| ` btn_xx_disabled ` | ` state_enabled ` 不可用效果 |
575
562
| ` btn_xx_checked ` | ` state_checked ` 选中效果 |
576
563
| ` btn_xx_selected ` | ` state_selected ` 选中效果 |
577
564
| ` btn_xx_hovered ` | ` state_hovered ` 悬停效果 |
578
565
| ` 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 ` 窗口聚焦效果 |
581
568
582
569
> 注意:使用 Android Studio 的插件 SelectorChapek 可以快速生成 selector,前提是命名要规范。
583
570
584
571
585
- #### 4.3 动画文件( ` anim ` 文件夹下 )
572
+ #### 4.4 布局资源文件( ` layout/ ` )
586
573
587
- 全部小写,采用下划线命名法,加前缀区分。
574
+ ##### 4.4.1 ` contentView ` 命名
588
575
589
- 具体动画采用以下规则: ` 模块名_逻辑名称 ` 。
576
+ 必须以全部单词小写,单词间以下划线分割,使用名词或名词词组 。
590
577
591
- 例如: ` refresh_progress.xml ` 、 ` market_cart_add.xml ` 、 ` market_cart_remove.xml ` 。
578
+ 所有 ` Activity ` 或 ` Fragment ` 的 ` contentView ` 必须与其类名对应,对应规则为:将所有字母都转为小写,将类型和功能调换(也就是后缀变前缀) 。
592
579
593
- 普通的 ` tween ` 动画采用如下表格中的命名方式: ` 动画类型_方向 `
580
+ 例如: ` activity_main.xml `
594
581
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 ` | 中间缩小 |
606
582
583
+ ##### 4.4.2 ` Dialog ` 命名
584
+
585
+ 规则:` dialog_描述.xml `
586
+
587
+ 例如:` dialog_hint.xml `
588
+
589
+
590
+ ##### 4.4.3 ` PopupWindow ` 命名
607
591
608
- #### 4.4 ` values ` 中 name 命名
592
+ 规则:` ppw_描述.xml `
593
+
594
+ 例如:` ppw_info.xml `
609
595
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 `
611
627
612
628
` colors.xml ` 的 ` name ` 命名使用下划线命名法,在你的 ` colors.xml ` 文件中应该只是映射颜色的名称一个 ARGB 值,而没有其它的。不要使用它为不同的按钮来定义 ARGB 值。
613
629
@@ -653,7 +669,7 @@ public class MyClass {
653
669
> 注意:如果某些颜色和主题有关,那就单独写一个 ` colors_theme.xml ` 。
654
670
655
671
656
- ##### 4.4 .2 ` dimens.xml `
672
+ ##### 4.6 .2 ` dimens.xml `
657
673
658
674
像对待 ` colors.xml ` 一样对待 ` dimens.xml ` 文件,与定义颜色调色板一样,你同时也应该定义一个空隙间隔和字体大小的“调色板”。 一个好的例子,如下所示:
659
675
@@ -684,7 +700,7 @@ public class MyClass {
684
700
布局时在写 ` margins ` 和 ` paddings ` 时,你应该使用 ` spacing_xx ` 尺寸格式来布局,而不是像对待 ` string ` 字符串一样直接写值,像这样规范的尺寸很容易修改或重构,会使应用所有用到的尺寸一目了然。 这样写会非常有感觉,会使组织和改变风格或布局是非常容易。
685
701
686
702
687
- ##### 4.4 .3 ` strings.xml `
703
+ ##### 4.6 .3 ` strings.xml `
688
704
689
705
` strings ` 的 ` name ` 命名使用下划线命名法,采用以下规则:` 模块名+逻辑名称 ` ,这样方便同一个界面的所有 string 都放到一起,方便查找。
690
706
@@ -699,9 +715,9 @@ public class MyClass {
699
715
| ` loading ` | 加载文字 |
700
716
701
717
702
- ##### 4.4 .4 ` styles.xml `
718
+ ##### 4.6 .4 ` styles.xml `
703
719
704
- ` style ` 的 ` name ` 命名使用大驼峰命名法,几乎每个项目都需要适当的使用 ` style ` 文件,因为对于一个视图来说有一个重复的外观是很常见的 ,将所有的外观细节属性(` colors ` 、` padding ` 、` font ` )放在 ` style ` 文件中。 在应用中对于大多数文本内容,最起码你应该有一个通用的 ` style ` 文件,例如:
720
+ ` style ` 的 ` name ` 命名使用大驼峰命名法,几乎每个项目都需要适当的使用 ` style ` 文件,因为对于一个视图来说,有一个重复的外观是很常见的 ,将所有的外观细节属性(` colors ` 、` padding ` 、` font ` )放在 ` style ` 文件中。 在应用中对于大多数文本内容,最起码你应该有一个通用的 ` style ` 文件,例如:
705
721
706
722
```
707
723
<style name="ContentText">
@@ -721,19 +737,15 @@ public class MyClass {
721
737
/>
722
738
```
723
739
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 ` 中。
727
741
728
742
729
- #### 4.5 layout 中的 id 命名
743
+ #### 4.7 id 命名
730
744
731
- 命名模式为: ` view 缩写_模块名_逻辑名 ` ,比如 ` btn_main_search ` 。
745
+ 命名规则: ` view缩写_{模块名}_逻辑名 ` ,例如: ` btn_main_search ` 、 ` btn_back ` 。
732
746
733
747
使用 Android Studio 的插件 ButterKnife Zelezny,生成注解非常方便,原生的话可以使用 Android Code Generator 插件。
734
748
735
- 如果想对资源文件进行分包可以参考我这篇文章:** [ Android Studio 下对资源进行分包] [ Android Studio 下对资源进行分包 ] ** 。
736
-
737
749
738
750
### 5 版本统一规范
739
751
@@ -980,7 +992,7 @@ AS 已帮你集成了一些注释模板,我们只需要直接使用即可,
980
992
981
993
## 附录
982
994
983
- ### UI 控件缩写表
995
+ ### UI 控件缩写表
984
996
985
997
| 名称 | 缩写 |
986
998
| -------------- | ---- |
@@ -1055,6 +1067,7 @@ AS 已帮你集成了一些注释模板,我们只需要直接使用即可,
1055
1067
1056
1068
## 版本日志
1057
1069
1070
+ * 17 / 12 / 01 : 对资源文件规范进行重构;
1058
1071
* 17 / 11 / 29 : 格式化中英混排;
1059
1072
* 17 / 03 / 06 : 发布初版;
1060
1073
* 17 / 03 / 07 : 修订目录排版,完善某些细节;
0 commit comments