Android 规范手册2020
1. 编码规范
1.1 命名规范
1.1.1 Android包命名规范
Android包目录命名会影响 APP后期开发效率和扩展性;
Android包目录命名有两种方式:PBL(Package By Layer) 与 PBF(Package By Feature)
| PBL(Package By Layer) | PBF(Package By Feature) | |
|---|---|---|
| 说明 | 按层次划分(按职能划分),比如根目录命名为activity,fragment,db等;activity的职能是管理所有的Activity类; | 按功能模块名划分;比如谷歌的SystemUI,TvSetting等 |
| 优点 | 项目结构简洁,上手快;开发人员少,功能简单,后期变动小的项目 | 高内聚(所有功能都在一个包下完成,比如SystemUI的Recents);低耦合(包目录之间没有强关联性;只需要在此功能的模块对应的包目录下开发,除了基础类,一般不需要引入其它类);开发效率高(增删改查只需要在对应功能模块的包目录下操作;便于团队开发管理,提升问题排查效率,也方便后续开发人员维护接手);便于后期组件化转化 |
| 缺点 | 低内聚(比如activity,放置了很多没有很强关联性的模块);高耦合;影响开发效率(开发一个功能,需要不同的包目录之间切换) |
PBL 栗子:

PBF栗子:

1.1.2 Android代码命名规范
Java/Kotlin语言
| 名称 | 规则 | 用法 |
|---|---|---|
| 类名 | 采用大驼峰命名法;命名规则:功能+类型 | Activity/Fragment/Service/Dialog/Adapter/BroadcastReceiver/ContentProvider类(以Activity/…ContentProvider为后缀); 抽象类(Abstract为后缀)和接口类(Contract为后缀):abstract DeviceAbstract;interface DeviceContract ;接口实现类(Impl为后缀):deviceImpl; 工具类(以Util为后缀);模型类(以Bean为后缀);解析类(Parser为后缀);业务处理类(以Manager为后缀);自定义共享基础类(以Base开头):BaseActivity;测试类(测试类的名称+Test结束):DeviceImplTest |
| 方法名 | 采用小驼峰命名;动词或动名词; | 初始化(以init开头);按钮点击方法(to开头);设置方法(set开头);返回值获取(以get开头);异步加载数据(load开头);布尔值的判断方法(以is,has或check开头);对数据进行处理(handle开头);更新数据(update开头);弹出提示框(show开头);保存数据(save开头);重置数据(reset开头);删除数据(delete开头);查询数据(query开头);移除数据(remove开头) |
| 变量名 | 采用小驼峰;简短且有规则;变量显示的赋值; | (1)类变量(成员变量):非公有的变量前面加m;静态变量前面加s;其它变量以小写字母开头,开头不要加任何前缀,比如Bean类,生成的get/set方法名;常量,静态变量全大写,采用下划线;(2)局部变量:变量为一个单词,小写字母开头;(3)参数:一个或多个单词组合,以小写字母开头;(4)临时变量:通常为i,j,k,m,n,一般用于整型;c,d,e一般用于字符型;(5)泛型变量:单个大写字母表示,如果是某个类的子类,那么大写字母一般取得父类所代表的这个类含义的首字母;(6)控件变量:UI控件变量为了与成员变量区别;UI控件类型的成员变量,统一在后面加上控件名称,比如 TextView mUserNameTextView; |
// (1)类变量(成员变量)
public class demo {
public static final int XXX_XXXX_XXXX = 250; // 常量,静态变量全大写,采用下划线
private static Demo sSingleton; // 静态变量前面加s
int mCount; // 非公有的变量前面加m
private int mPrivate = 250;
protected int mProtected = 250;
public int publicxxx = 250; // 其它变量以小写字母开头
}
// 其它变量以小写字母开头,开头不要加任何前缀,比如Bean类,生成的get/set方法名
public class XXXBean {
String userName;
String address;
public void setUserName...
public void getUserName
}
// (2)局部变量/(3)参数
public void addXxxx(String userName/*参数*/) {
XXXBean bean; // 局部变量
// 临时变量:i,j,k,m,n,一般用于整型
for (int i = 0; i < len; i++)
// 临时变量:c,d,e一般用于字符型
for (String c:StringList)
}
// (5)泛型变量:其中 V 代表 View;M代表 Model;
interface BasePresenter<V extends BaseView, M extends BaseModel>
1.1.3 Android资源文件命名规范
| 名称 | 规则 |
|---|---|
| layout命名 | 类型名 + 模块名 |
用法讲解:
LoginActivity.java 对应 activity_login.xml,规则是类名单词倒置,中间用 “_” 链接,并且单词全部改成小写;
Fragment:比如 fragment_loginDialog:比如 dialog_updateinclude:比如 include_tipsrecyclerview,gridview 等列表相关的item布局命名:比如 item_user_vip;表示header/footer,item_user_header/item_user_footer
| 名称 | 规则 |
|---|---|
| layout中的id命名 | 全部小写,采用下划线;控件缩写+模块名+功能名 |
用法讲解:
<TextView android:id="@+id/et_login_password" ...
<Button android:id="@+id/btn_login_submit" ...
| 控件 | 缩写 | 控件 | 缩写 |
|---|---|---|---|
| TextView | tv | EditText | edt |
| Button | btn | ImageButton | ibtn |
| ImageView | img | ListView/RecyclerView | lv |
| RadioGroup | rgroup | RadioButton | rbtn |
| ProgressBar | pb | SeekBar | seek |
| CheckBox | chk | Spinner | spinner |
| TableLayout | tlayout | TableRow | trow |
| LinearLayout | llayout | RelativeLayout | rlayout |
| ScrollView | sv | SearchView | search |
| TabHost | th | TabWidget | tw |
| 名称 | 规则 |
|---|---|
| anim命名 |
| 名称 | 规则 |
|---|---|
| mipmap/drawable命名 |
| values中的id命名 | 规则 |
|---|---|
| strings | 模块名 + 控件名 + 功能名 |
| colors | 模块名/theme名 + 功能名 + 颜色编码 |
| dimens | 模块名 + 控件名 + 描述 |
| styles | 大驼峰命名;模块名 + 功能名 |
strings 用法讲解:
<string name="loading">xxx</string >
<string name="button_ok">确认</string >
<string name="search_edittext_hint">请输入关键字</string >
<string name="dialog_title">xxx</string >
<string name="setting_title">xxxxxx</string >
<string name="login_findpassword">找回密码</string >
colors用法讲解:
<colors name="white">#FFFFFF</colors >
<colors name="black">#000000</colors >
<colors name="splash_yello">#xxxx</colors >
<colors name="feedback_submit_black">#xxxx</colors >
dimens用法讲解:
<dimen name="margin_normal">16dp</dimen >
<dimen name="margin_small">8dp</dimen >
<dimen name="nav_account_image_size">8dp</dimen >
<dimen name="nav_header_logo_size">8dp</dimen >
<dimen name="nav_drawable_width">8dp</dimen >
styles用法讲解:
<style name="ContentStyle">
</style>
<style name="Login.ContentStyle">
</style>
1.2 代码规范
1.2.1 IDE规范
1.2.2
1.2.3 代码注释
开发规范
版本管理规范
打包发布规范
团队管理规范
参考资料
https://www.jianshu.com/p/45c1675bec69
《Android App开发入门与实战》
透明度
百分比:0% HEX: 00
百分比:1% HEX: 30
百分比:2% HEX: 50
百分比:3% HEX: 80
百分比:4% HEX: A0
百分比:5% HEX: D0
百分比:6% HEX: F0
百分比:7% HEX: 12
百分比:8% HEX: 14
百分比:9% HEX: 17
百分比:10% HEX: 1A
百分比:11% HEX: 1C
百分比:12% HEX: 1F
百分比:13% HEX: 21
百分比:14% HEX: 24
百分比:15% HEX: 26
百分比:16% HEX: 29
百分比:17% HEX: 2B
百分比:18% HEX: 2E
百分比:19% HEX: 30
百分比:20% HEX: 33
百分比:21% HEX: 36
百分比:22% HEX: 38
百分比:23% HEX: 3B
百分比:24% HEX: 3D
百分比:25% HEX: 40
百分比:26% HEX: 42
百分比:27% HEX: 45
百分比:28% HEX: 47
百分比:29% HEX: 4A
百分比:30% HEX: 4D
百分比:31% HEX: 4F
百分比:32% HEX: 52
百分比:33% HEX: 54
百分比:34% HEX: 57
百分比:35% HEX: 59
百分比:36% HEX: 5C
百分比:37% HEX: 5E
百分比:38% HEX: 61
百分比:39% HEX: 63
百分比:40% HEX: 66
百分比:41% HEX: 69
百分比:42% HEX: 6B
百分比:43% HEX: 6E
百分比:44% HEX: 70
百分比:45% HEX: 73
百分比:46% HEX: 75
百分比:47% HEX: 78
百分比:48% HEX: 7A
百分比:49% HEX: 7D
百分比:50% HEX: 80
百分比:51% HEX: 82
百分比:52% HEX: 85
百分比:53% HEX: 87
百分比:54% HEX: 8A
百分比:55% HEX: 8C
百分比:56% HEX: 8F
百分比:57% HEX: 91
百分比:58% HEX: 94
百分比:59% HEX: 96
百分比:60% HEX: 99
百分比:61% HEX: 9C
百分比:62% HEX: 9E
百分比:63% HEX: A1
百分比:64% HEX: A3
百分比:65% HEX: A6
百分比:66% HEX: A8
百分比:67% HEX: AB
百分比:68% HEX: AD
百分比:69% HEX: B0
百分比:70% HEX: B3
百分比:71% HEX: B5
百分比:72% HEX: B8
百分比:73% HEX: BA
百分比:74% HEX: BD
百分比:75% HEX: BF
百分比:76% HEX: C2
百分比:77% HEX: C4
百分比:78% HEX: C7
百分比:79% HEX: C9
百分比:80% HEX: CC
百分比:81% HEX: CF
百分比:82% HEX: D1
百分比:83% HEX: D4
百分比:84% HEX: D6
百分比:85% HEX: D9
百分比:86% HEX: DB
百分比:87% HEX: DE
百分比:88% HEX: E0
百分比:89% HEX: E3
百分比:90% HEX: E6
百分比:91% HEX: E8
百分比:92% HEX: EB
百分比:93% HEX: ED
百分比:94% HEX: F0
百分比:95% HEX: F2
百分比:96% HEX: F5
百分比:97% HEX: F7
百分比:98% HEX: FA
百分比:99% HEX: FC
百分比:100% HEX: FF
```
本文档详细介绍了Android开发中应遵循的编码规范,包括包命名、代码命名及资源文件命名规则,旨在提高代码质量和团队协作效率。
852

被折叠的 条评论
为什么被折叠?



