请选择 进入手机版 | 继续访问电脑版

Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4846|回复: 0

安卓开发规范

[复制链接]

9

主题

14

帖子

189

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
189
发表于 2022-6-9 09:59:07 | 显示全部楼层 |阅读模式
1 安卓开发规范
1.1  命名规范
命名规范与Java开发规范中命名规范保持一致。
1.2  资源文件规范
资源文件命名为全部小写,采用下划线命名法。
如果想对资源文件进行分包可以参考这篇文章:AndroidStudio 下对资源进行分包
(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/ 目录下。
命名规则:类型{_模块名}_逻辑名称、类型{_模块名}_颜色。
说明:{} 中的内容为可选;类型可以是可绘制对象资源类型,也可以是控件类型(具体见附录UI 控件缩写表);最后可加后缀 _small 表示小图,_big 表示大图。
例如:
[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 及不同的开发人员都有不同的版本,所以需要一个统一版本规范的文件。
具体可以参考这篇博文:Android 开发之版本统一规范
如果是开发多个系统级别的应用,当多个应用同时用到相同的 so 库时,一定要确保 so 库的版本一致,否则可能会引发应用崩溃。
1.4  第三方库规范
别再闭门造车了,用用最新最火的技术吧,安利一波:Android 流行框架查速表,顺便带上干货:Android 开发人员不得不收集的代码
希望 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:在写多行注释时,如果你希望在必要时能重新换行(即注释像段落风格一样),那么使用 /* ... */。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|立达政通科技集团

GMT+8, 2026-6-15 16:00 , Processed in 0.058374 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表