Android分包规范
全部使用小写字母。一级包名为com,二级包名为xx(一般公司或者个人),三级包名根据应用进行命名 如:
- com.peakmain.ui
- com.peakmain.basclibrary
第四级可以分为PBF和PBL
PBL(package By Layer)
按照层级划分包,将同一层级的组件放在同一个包中。适合小型项目或者基本组件开源库(如:UI组件封装,架构库组件封装)
举例:假设前三级固定为com.peakmain.basiclibrary
包名 | 此包中包含 |
---|---|
com.peakmain.basclibrary.activity | 页面用到的Activity类 |
com.peakmain.basclibrary.fragment | 页面用到的Fragment类 |
com.peakmain.basclibrary.base | 页面中基础类,如:(BaseActivity、BaseFragment) |
com.peakmain.basclibrary.adapter | 页面用到的Adapter类 |
com.peakmain.basclibrary.bean | 数据类 |
com.peakmain.basclibrary.view/com.peakmain.basclibrary.widget | 自定义view |
缺点
随着项目规模的增大,可能会导致包结构的不清晰和混乱,给维护和开发带来困难
PBF(Package by Feature)
将相关的功能(或称为特性)放在同一个包中
一个Activity,多个Fragment
- com.peakmain.ui.main
- com.peakmain.ui.main.firstpage
- com.peakmain.ui.main.firstpage.adapter
- com.peakmain.ui.main.firstpage.viewmodel
- com.peakmain.ui.main.firstpage.fragment
- com.peakmain.ui.main.journey
- com.peakmain.ui.main.journey.adapter
- com.peakmain.ui.main.journey.viewmodel
- com.peakmain.ui.main.journey.fragment
- com.peakmain.ui.main.activity
- com.peakmain.ui.main.activity.adapter
- com.peakmain.ui.main.activity.viewmodel
- com.peakmain.ui.main.activity.fragment
- com.peakmain.ui.main.firstpage
只有activity
- com.peakmain.ui.hotellist
- com.peakmain.ui.hotellist.activity
- com.peakmain.ui.hotellist.viewmodel
- com.peakmain.ui.hotellist.adapter
- com.peakmain.ui.hotellist.bean
Android资源文件命名与使用
类名
采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写
类 | 描述 | 例如 |
---|---|---|
Activity类 | Activity作为后缀标识 | HotelListActivity、MainActivity |
Fragment类 | Fragment作为后缀标识 | HomeFragment、MineFragement |
Service类 | 以Service作为后缀标识 | DownloadSevice |
BroadcastReceive类 | 以Receive作为后缀标识 | DownloadReceive |
ContentProvider 类 | 以Provider作为后缀标识 | PushProvider |
Adapter类 | Adapter作为后缀标识 | HotelListAdapter |
解析类 | Parser作为后缀标识 | HomeParser |
工具方法类 | Utils或者Manager作为后缀标识 | PkPermissionUtils |
数据库 | 以DBHelper作为后缀标识 | MebDbHelper |
抽象类 | Base/Abstract开头 | BaseActivity |
ViewModel类 | ViewModel作为后缀标识 | HomeViewModel |
接口 | I开头/able/ible结尾 | IHomeView、Runnable |
layout文件的命名方式
app的module都可移除module(app)前缀
layout文件 | 例如 |
---|---|
Activity的layout以module_activity开头 | activity_main、ui_activity_login |
Fragment 的 layout 以 module_fragment 开头 | fragment_home、ui_fragment_permission |
Dialog 的 layout 以 module_dialog 开头 | dialog_share、ui_dialog_tip |
include 的 layout 以 module_include 开头 | include_header、ui_include_header |
ListView 的行 layout 以 module_list_item 开头 | list_item_hotel、ui_list_item_hotel |
RecyclerView 的 item layout 以 module_recycle_item 开头 | recycle_item_hotel、ui_recycle_item_hotel |
多级嵌套的RecyclerView的item_layout以module_recycle_item_level | 一级:recycle_item_home 二级:假设你的二级RecyclerView显示商品的列表,可以命名:recylce_item_home_product 三级:假设你的三级RecyclerView显示商品的分类,可以命名:recycle_item_home_product_category |
GridView 的 item layout 以 module_grid_item 开头 | grid_item_home、ui_grid_item_home |
drawable资源
- 以小写单词+下划线的方式命名,根据分辨率不同存放不同的drawable目录下
- 采用规则如下:模块名_业务功能描述_控件描述_控件状态限定词
- 如:module_login_btn_pressed、module_tabs_icon_home_normal
- 推荐使用我封装的UI组件库中的ShapeTextView、ShapeLinearLayout和ShapeConstriantLayout减少drawable资源,减少包的体积
- TextView、LinearLayout和ConstraintLayout的封装
- 支持设置背景颜色,背景的圆角,线条的颜色,线条的宽度,支持文字上下左右图片资源两者居中,减少布局嵌套
anim 资源
- anim 资源名称以小写单词+下划线的方式命名,采用以下规则
- 模块名_逻辑名称_[方向|序号]
- Tween 动画(使用简单图像变换的动画,例如缩放、平移)资源
- 尽可能以通用的动画名称命名
- 如 module_fade_in , module_fade_out , module_push_down_in (动画+方向)
- Frame 动画(按帧顺序播放图像的动画)资源
- 尽可能以模块+功能命名+序号
- 如:module_loading_grey_001
color资源
- 一般公司颜色资源都是固定的那几套
- color资源是以#AARRGGBB为格式,写入module_colors.xml中,所以使用命名可以使用格式
- module_color_RRGGBB_透明度
- 如:
<color name="color_272a2b">#272a2b</color>
- 如:
- 或module_颜色_透明度
- 如:
<color name="black_alpha_10">#1A000000</color>
- 如:
- module_color_RRGGBB_透明度
dimen 资源
以dimen_数字为格式,写入module_colors.xml
<dimen name="dimen_0_5">0.5dp</dimen>
<dimen name="dimen_1">1dp</dimen>
string资源文件
string资源文件或者文本用到字符需要全部写入module_strings.xml文件中,字符串以小写单词+下划线的方式命名,采用以下规则
- 模块名+逻辑名称
- 如:module_login_tips
Id 资源
Id 资源原则上以驼峰法命名,View 组件的资源 id 建议以 View 的缩写作为前缀
常见缩写表
名称 | 缩写前缀 |
---|---|
LinearLayout | ll |
RelativeLayout | rl |
ConstraintLayout | cl |
ListView | lv |
ScollView | sv |
TextView | tv |
Button | bt/btn |
ImageView | iv |
CheckBox | cb |
RadioButton | rb |
EditText | et |
ShapeTextView | stv |
ShapeLinearLayout | sll |
ShapeConstraintLayout | scl |