Model规范
命名规范,参考阿里巴巴JAVA规范
Gson采用注解方式,不需要进行混淆配置
public field
equals( ) & hashCode( )
Gson自动生成后核对字段类型,尤其是float或double类型被设置为int类型
不参与运算的数字类型的,建议声明为String类型
id命名规范
ListView, ViewPager, SwipeRefreshLayout等一般页面只有一个的控件,可以直接命名为listView, viewPager, swipeRefreshLayout
TextView, ImageView, Button等常用的,一个页面一般不止一个。命名规范为tv_title, tvName, iv_Icon, iv_banner, bt_commit, bt_back。前缀+功能(讨论是否以下划线形式 tv_title, tv_name)
资源文件命名规范
Xml文件命名规范(模块+类型+页面+[功能])
所有文件名加模块统一前缀。AAPT打包时候会合并资源文件。
xml文件命名:例如 finance_list_item_equ.xml, finance_fragment_equ_detail.xml, finance_activity_account.xml
drawable文件命名:finance_account_
资源图片命名规范
一般命名:模块+页面+组件前缀+功能+状态
app_main_home_tab_category_default.png
app_main_home_tab_category_selected.png
app_main_home_tab_category.xml
模块内通用图片命名:模块+功能+状态
base_toolbar_back_default.png
base_toolbar_back_pressed.png
base_toolbar_back.png
SharedPreference文件命名(+模块前缀)
App模块下的UserConifg对应的XML文件名 app_user_config.xml
Finance模块下的开关控制对应的MXL命名文件finance_settings.xml
Db同上(+模块前缀)
Style命名规范
规范同类命名规范一致,驼峰,首字母大写。例如AppTheme, MainActivityTheme
加模块前缀。例如:TrpayMainActivityTheme BaseToolbarStyle
Color命名规范
加模块前缀
KEY
SharedPreference中的key都以SP_KEY_作为前缀,定义的常量名字作为Value
例如:private static final StringSP_KEY_USER_TOKEN= “SP_USER_TOKEN”;
例如:private static final StringSP_KEY_IS_FIRST_LAUNCH= “SP_IS_FIRST_LAUNCH”;
Activity中Intent的KEY都以INTENT_KEY_作为前缀,定义的常量名字作为Value
例如:private static final StringINTENT_KEY_USER_ID= “INTENT_KEY_USER_ID”;
例如:private static final StringINTENT_KEY_ORDER_MODEL= “INTENT_KEY_ORDER_MODEL”;
Fragment中Bundle的KEY都以BUNDLE_KEY_作为前缀
例如:private static final StringBUNDLE_KEY_ORDER_ID= “BUNDLE_KEY_ORDER_ID”;
典型方法
从网络请求数据 reqGet作为前缀。例如reqGetUserInfo(), reqGetInvestDetail()
向服务器提交数据reqPost、reqSubmit、reqSet、reqUpdate等reqPostUserProfile(),reqUpdateUserName()
静态量
静态变量以s作为前缀,例如priviate static OnPermissionCallbacksOnPermissionCallback;
静态常量全大小,下划线分割单词,例如public static final intINVEST_TYPE_I_CUN = 1;
注释
页面注释:
Activity、Fragment及包含复杂业务的View组件需要有截图注释点击查看示例
Model采用Java标准的文档注释
Java文件注释:
创建文件头注释模版
Created by YourName on 2017/3/23.
常量
不同作用的常量放在不同的Java文件里面
适合使用枚举的地方用常量加注解实现点我查看示例
其他
TextUtil.isEmpty( )建议进行静态导包
NullUtil静态导包
Java代码规范
资源命名规范
Layout文件
原则:
xml module_what_where_description
例子:
xml mall_activity_order.xml mall_fragment_order.xml mall_dialog_order.xml mall_include_toolbar.xml mall_include_order_header.xml mall_merge_order_content.xml mall_item_goods.xml
Drawable文件
原则
java module_what_where_description 图标:ic 背景:bg
例子
account_ic_avatar_default account_bg_goods_list_header
控件ID
原则:
```java
驼峰命名,description+控件名缩写
ListView, ViewPager, SwipeRefreshLayout等一般页面只有一个的控件,可以直接命名为listView, viewPager, swipeRefreshLayout
常用UI控件缩写表
LinearLayout:layout
RelativeLayout:layout
FrameLayout:layout
TableLayout:layout
Button:btn
ImageButton:btn
TextView:tv
EditText:et
ImageView:iv
```
例子:
xml tvTitle ivAvatar btnCommit tabBottom
Color文件
原则
xml 常见颜色使用colors.xml文件管理 如:white、black、transparent、colorTheme、colorPrimary、black10、white50 非常见颜色直接写在布局文件中
例子
xml <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="@dimen/common_toolbar_height" android:background="?attr/colorPrimary"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#333333""/>
Style文件
原则
java module+what+继承关系+where
例子
xml <!--Text Style--> <style name="Mall.TextAppearance" parent="Mall"> <item name="android:textStyle">normal</item> </style> <style name="Mall.TextAppearance.Toolbar.Title"parent="Common.TextAppearance"> <item name="android:textSize">@dimen/common_text_size_large_x</item> <item name="android:textColor">@color/common_toolbar_title_color</item> </style> <style name="Mall.TextAppearance.Toolbar.Menu" parent="Common.TextAppearance"> <item name="android:textSize">@dimen/common_text_size_small</item> <item name="android:textColor">@color/common_toolbar_title_color</item> </style> <!--Activity Style--> <style name="Common.Activity" parent="Theme.AppCompat.Light.NoActionBar" /> <style name="Common.Activity.Base" parent="Common.Activity"> <item name="colorPrimary">@color/common_colorPrimary</item> <item name="colorPrimaryDark">@color/common_colorPrimaryDark</item> <item name="colorAccent">@color/common_colorAccent</item> <item name="android:windowBackground">@null</item> <item name="android:windowSoftInputMode">adjustResize</item> <item name="android:windowAnimationStyle">@style/Common.Animation.Activity.Base</item> <item name="buttonStyle">@style/Widget.AppCompat.Button.Borderless</item> </style> <style name="Common.Activity.Base.FullScreen" parent="Common.Activity.Base"> <item name="android:windowFullscreen">true</item> </style> <style name="Common.Activity.Base.FullScreen.Translucent" parent="Common.Activity.Base.FullScreen"> <item name="android:backgroundDimEnabled">false</item> <item name="android:windowBackground">@color/common_transparent</item> <item name="android:windowIsTranslucent">true</item> <item name="colorPrimaryDark">@color/common_transparent</item> <item name="android:windowAnimationStyle">@null</item> </style>
Dimens、Integer等文件
原则
java module_what_where_description
例子:
xml <dimen name="common_activity_horizontal_margin">16dp</dimen> <dimen name="common_activity_vertical_margin">16dp</dimen> <dimen name="common_text_size_tiny">10sp</dimen> <dimen name="common_text_size_small">12sp</dimen> <dimen name="common_text_size_normal">14sp</dimen> <dimen name="common_text_size_large">16sp</dimen> <dimen name="common_text_size_large_x">18sp</dimen> <dimen name="common_text_size_large_xx">20sp</dimen> <dimen name="common_toolbar_height">50dp</dimen>
资源文件注意事项
ResourceOptimize
对UI提供的图片进行压缩空间的检测(tinypng.com)
WebP格式图片
常见图片状态命名统一:_pressed _default _enable _disable _selected _focused
图片要根据UI切图的屏幕规格放到对应dpi的drawable文件内
shape、selector等xml资源统一放在drawable(无dpi后缀)文件夹
Shape类型定义一定要求有背景
启动图标统一防止在对应dpi的mipmap文件内
默认value文件要包含带后缀value文件的内容,比如,在value-v21文件中声明的内容,在value中也必须声明
Manifest内Activity要声明screenOrientation
对于小图标,即使图片一模一样但使用的地方毫无相关性,就复制一份重新命名
XML灵活使用 xmlns:tools=“http://schemas.android.com/tools”
XML避免Empty Body
所有Style文件要有BaseStyle并保持合理的继承关系
XML内常用的组件统一用Style声明基础属性
所有的基础主题(如AppTheme)需要声明TextView的textColor\textSize\hintColor,防止因遗漏导致不同系统出现显示差异、不符合预期等