@@ -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