Android开发手册——Android代码规范

845 阅读3分钟

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
只有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资源,减少包的体积
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>
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 的缩写作为前缀

常见缩写表

名称缩写前缀
LinearLayoutll
RelativeLayoutrl
ConstraintLayoutcl
ListViewlv
ScollViewsv
TextViewtv
Buttonbt/btn
ImageViewiv
CheckBoxcb
RadioButtonrb
EditTextet
ShapeTextViewstv
ShapeLinearLayoutsll
ShapeConstraintLayoutscl