1 安卓开发规范
1.1 命名规范命名规范与Java开发规范中命名规范保持一致。 1.2 资源文件规范资源文件命名为全部小写,采用下划线命名法。 (1)动画资源文件(anim/ 和 animator/) 安卓主要包含属性动画和视图动画,其视图动画包括补间动画和逐帧动画。属性动画文件需要放在 res/animator/ 目录下,视图动画文件需放在 res/anim/ 目录下。 命名规则:{模块名_}逻辑名称。 说明:{} 中的内容为可选,逻辑名称可由多个单词加下划线组成。 例如:refresh_progress.xml、market_cart_add.xml、market_cart_remove.xml。 如果是普通的补间动画或者属性动画,可采用:动画类型_方向 的命名方式。 例如: [td] | 名称 | 说明 | | fade_in | 淡入 | | fade_out | 淡出 | | push_down_in | 从下方推入 | | push_down_out | 从下方推出 | | push_left | 推向左方 | | slide_in_from_top | 从头部滑动进入 | | zoom_enter | 变形进入 | | slide_in | 滑动进入 | | shrink_to_middle | 中间缩小 |
(2)颜色资源文件(color/) 专门存放颜色相关的资源文件。 命名规则:类型_逻辑名称。 例如:sel_btn_font.xml。 颜色资源也可以放于res/drawable/ 目录,引用时则用 @drawable 来引用,但不推荐这么做,最好还是把两者分开。 (3)图片资源文件(drawable/ 和 mipmap/) res/drawable/ 目录下放的是位图文件(.png、.jpg、.gif)或编译为可绘制对象资源子类型的 XML 文件,而 res/mipmap/ 目录下放的是不同密度的启动图标,所以 res/mipmap/ 只用于存放启动图标,其余图片资源文件都应该放到res/drawable/ 目录下。 命名规则:类型{_模块名}_逻辑名称、类型{_模块名}_颜色。 例如:
[td] | 名称 | 说明 | | btn_main_about.png | 主页关于按键 类型_模块名_逻辑名称 | | btn_back.png | 返回按键 类型_逻辑名称 | | divider_maket_white.png | 商城白色分割线 类型_模块名_颜色 | | ic_edit.png | 编辑图标 类型_逻辑名称 | | bg_main.png | 主页背景 类型_逻辑名称 | | btn_red.png | 红色按键 类型_颜色 | | btn_red_big.png | 红色大按键 类型_颜色 | | ic_head_small.png | 小头像图标 类型_逻辑名称 | | bg_input.png | 输入框背景 类型_逻辑名称 | | divider_white.png | 白色分割线 类型_颜色 | | bg_main_head.png | 主页头部背景 类型_模块名_逻辑名称 | | def_search_cell.png | 搜索页面默认单元图片 类型_模块名_逻辑名称 | | ic_more_help.png | 更多帮助图标 类型_逻辑名称 | | divider_list_line.png | 列表分割线 类型_逻辑名称 | | sel_search_ok.xml | 搜索界面确认选择器 类型_模块名_逻辑名称 | | shape_music_ring.xml | 音乐界面环形形状 类型_模块名_逻辑名称 | 如果有多种形态,如按钮选择器:sel_btn_xx.xml,采用如下命名:
[td] | 名称 | 说明 | | sel_btn_xx | 作用在 btn_xx 上的 selector | | btn_xx_normal | 默认状态效果 | | btn_xx_pressed | state_pressed 点击效果 | | btn_xx_focused | state_focused 聚焦效果 | | btn_xx_disabled | state_enabled 不可用效果 | | btn_xx_checked | state_checked 选中效果 | | btn_xx_selected | state_selected 选中效果 | | btn_xx_hovered | state_hovered 悬停效果 | | btn_xx_checkable | state_checkable 可选效果 | | btn_xx_activated | state_activated 激活效果 | | btn_xx_window_focused | state_window_focused 窗口聚焦效果 |
注意:使用 AndroidStudio 的插件 SelectorChapek 可以快速生成 selector,前提是命名要规范。 (4)布局资源文件(layout/) 命名规则:类型_模块名、类型{_模块名}_逻辑名称。 说明:{} 中的内容为可选。 例如: [td] | 名称 | 说明 | | activity_main.xml | 主窗体 类型_模块名 | | activity_main_head.xml | 主窗体头部 类型_模块名_逻辑名称 | | fragment_music.xml | 音乐片段 类型_模块名 | | fragment_music_player.xml | 音乐片段的播放器 类型_模块名_逻辑名称 | | dialog_loading.xml | 加载对话框 类型_逻辑名称 | | ppw_info.xml | 信息弹窗(PopupWindow) 类型_逻辑名称 | | item_main_song.xml | 主页歌曲列表项 类型_模块名_逻辑名称 |
(5)菜单资源文件(menu/) 菜单相关的资源文件应放在该目录下。 命名规则:{模块名_}逻辑名称 说明:{} 中的内容为可选。 例如:main_drawer.xml、navigation.xml。 (6)values 资源文件(values/) 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。 (7)id 命名 命名规则:view缩写{_模块名}_逻辑名,例如:btn_main_search、btn_back。 如果在项目中有用黄油刀的话,使用AS 的插件:ButterKnife Zelezny,可以非常方便帮助你生成注解;没用黄油刀的话可以使用 Android Code Generator 插件。 1.3 版本统一规范Android 开发存在着众多版本的不同,比如compileSdkVersion、minSdkVersion、targetSdkVersion 以及项目中依赖第三方库的版本,不同的 module 及不同的开发人员都有不同的版本,所以需要一个统一版本规范的文件。 如果是开发多个系统级别的应用,当多个应用同时用到相同的 so 库时,一定要确保 so 库的版本一致,否则可能会引发应用崩溃。 1.4 第三方库规范希望 Team 能用时下较新的技术,对开源库的选取,一般都需要选择比较稳定的版本,作者在维护的项目,要考虑作者对 issue 的解决,以及开发者的知名度等各方面。选取之后,一定的封装是必要的。 1.5 注释规范(1)类注释 每个类完成后应该有作者姓名和联系方式的注释,对自己的代码负责。 /** * <pre> * author : Blankj * e-mail : xxx@xx * time : 2017/03/07 * desc : xxxx 描述 * version: 1.0 * </pre> */public class WelcomeActivity { ...}(2)方法注释 每一个成员方法(包括自定义成员方法、覆盖方法、属性方法)的方法头都必须做方法头注释,在方法前一行输入 /** + 回车 或者设置 Fix doc comment(Settings -> Keymap -> Fix doc comment)快捷键,AS 便会帮你生成模板,我们只需要补全参数即可,如下所示。 /** * bitmap 转 byteArr * * @param bitmap bitmap 对象 * @param format 格式 * @return 字节数组 */public static byte[] bitmap2Bytes(Bitmap bitmap, CompressFormat format) { if (bitmap == null) return null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(format, 100, baos); return baos.toByteArray();}(3)块注释 块注释与其周围的代码在同一缩进级别。它们可以是 /* ... */ 风格,也可以是 // ... 风格(//后最好带一个空格)。对于多行的 /* ... */ 注释,后续行必须从 * 开始, 并且与前一行的 * 对齐。以下示例注释都是 OK 的。 /* * This is * okay. */// And so// is this./* Or you can* even do this. */注释不要封闭在由星号或其它字符绘制的框架里。 Tip:在写多行注释时,如果你希望在必要时能重新换行(即注释像段落风格一样),那么使用 /* ... */。
|