包(packages)
采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xx(可以是公司或则个人的随便),三级包名根据应用进行命名,四级包名为模块名或层级名
包名 | 此包中包含 |
---|
com.xx.应用名称缩写.activities | 页面用到的Activity类 (activities层级名用户界面层) |
com.xx.应用名称缩写.base | 页面中每个Activity类共享的可以写成一个BaseActivity类(基础共享的类) |
com.xx.应用名称缩写.adapter | 页面用到的Adapter类(适配器的类) |
com.xx.应用名称缩写.tools | 此包中包含:公共工具方法类(tools模块名) |
com.xx.应用名称缩写.bean(或则com.xx.应用名称缩写.unity) | 此包中包含:元素类 |
com.xx.应用名称缩写.db | 数据库操作类 |
com.xx.应用名称缩写.view(或则 com.xx.应用名称缩写.ui) | 自定义的View类等 |
com.xx.应用名称缩写.service | Service服务 |
com.xx.应用名称缩写.broadcast | Broadcast服务 |
类(classes)
采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
类 | 描述 | 例如 |
---|
Activity 类 | Activity为后缀标识 | WelcomeActivity |
Adapter类 | Adapter为后缀标识 | NewDetailAdapter |
公共方法类 | Tools或Manager为后缀标识 | 线程池管理类:ThreadPoolManager 日志工具类:LogTools |
数据库类 | 以DBHelper后缀标识 | 新闻数据库:NewDBHelper |
Service类 | 以Service为后缀标识 | 时间服务TimeService |
BroadcastReceiver类 | 以BroadcastReceiver为后缀标识 | |
ContentProvider | 以Provider为后缀标识 | |
直接写的共享基础类 | 以Base开头 | BaseActivity,BaseFragment |
方法(methods)
用小驼峰命名法例如:onCreate(), run()
方法 | 说明 |
---|
initXX() | 初始化相关方法,使用init为前缀标识,如初始化布局initView() |
isXX() | checkXX()方法返回值为boolean型的请使用is或check为前缀标识 |
getXX() | 返回某个值的方法,使用get为前缀标识 |
processXX() | 对数据进行处理的方法,尽量使用process为前缀标识 |
displayXX() | 弹出提示框和提示信息,使用display为前缀标识 |
saveXX() | 与保存数据相关的,使用save为前缀标识 |
resetXX() | 对数据重组的,使用reset前缀标识 |
clearXX() | 清除数据相关的 |
removeXXX() | 清除数据相关的 |
drawXXX() | 绘制数据或效果相关的,使用draw前缀标识 |
变量
采用小驼峰命名法
类 | 描述 | 例如 |
---|
局部变量命名 | 除首单词外,其余所有单词的第一个字母大写 | index |
静态成员变量命名 | s+变量名,单词首字母全部大写 | sInstance |
成员变量命名 | m+变量名,单词首字母全部大写 | mMcuManager |
常量 | 命名只能包含字母和_,字母全部大写,单词之间用_隔开 | MSG_BRAKE_ON |
资源文件(图片drawable文件夹下)
全部小写,采用下划线命名法,加前缀区分
命名模式:控件名称_逻辑名称/common_逻辑名称
如果有多种形态如按钮等除外如btn_xx.xml(selector)
名称 | 功能 |
---|
btn_xx | 按钮图片使用btn_整体效果(selector) |
btn_xx_normal | 按钮图片使用btn_正常情况效果 |
btn_xx_press | 按钮图片使用btn_点击时候效果 |
btn_xx_disable | 按钮图片使用btn_不可点击时候效果 |
bg_head | 背景图片使用bg_功能_说明 |
def_search_cell | 默认图片使用def_功能_说明 |
icon_more_help | 图标图片使用icon_功能_说明 |
资源布局文件(XML文件(layout布局文件))
全部小写,采用下划线命名法
- contentview命名, Activity默认布局,以去掉后缀的Activity类进行命名。不加后缀:
功能模块.xml
例如:main.xml、more.xml、settings.xml
或则:activity_功能模块.xml
例如:activity_main.xml、activity_more.xml - Dialog命名:dialog_描述.xml
例如:dlg_hint.xml - PopupWindow命名:ppw_描述.xml
例如:ppw _info.xml - 列表项命名list_item_描述.xml
例如:list_item_city.xml - 包含项:include_模块.xml
例如:include_head.xml、include_bottom.xml - adapter的子布局:功能模块_item.xml
例如:main_item.xml
动画文件(anim文件夹下)
全部小写,采用下划线命名法,加前缀区分。
前面为动画的类型,后面为方向
动画命名例子 | 描述 |
---|
fade_in | 淡入 |
fade_out | 淡出 |
push_down_in | 从下方推入 |
push_down_out | 从下方推出 |
push_left | 推像左方 |
slide_in_from_top | 从头部滑动进入 |
zoom_enter | 变形进入 |
slide_in | 滑动进入 |
shrink_to_middle | 中间缩小 |
Android编码规范建议
- Java代码中不出现中文;
- 代码中不出现字符串,所有的字符串定义到string.xml中;
- 图片尽量分拆成多个可重用的图片;
- 使用静态变量方式实现界面间共享要慎重;
- Log(TAG,详细描述):TAG以常量的方式定义为该类的类名;
- 不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致message.what冲突;
- activity中在一个View.OnClickListener中处理所有的逻辑;
- strings.xml中使用%1$s实现字符串的通配;
- 如果多个Activity中包含共同的UI处理,那么可以提炼一个CommonActivity,把通用部分叫由它来处理,其他activity只要继承它即可;