Android开发命名规范及部分图标准则

这里统一使用的命名规则作为开发组内进行沟通使用,约定俗成,仅供参考。

英文缩写原则

  1. 较短的单词可通过去掉"元音"形成缩写
  2. 较长的单词可取单词的头几个字母形成缩写
  3. 此外还有一些约定成俗的英文单词缩写.

若是缩减的单词容易造成误解的,应保留完整单词。

下面为常见的英文单词缩写:

名称 缩写 备注
icon ic (主要用在app的图标)
color cl (主要用于颜色值,建议不缩写)
divider di (主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线,建议不缩写)
selector sl (主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector,建议不缩写)
average avg
background bg (主要用于布局和子布局的背景)
buffer buf
control ctrl
delete del (主要用于布局ID)
document doc
error err (主要用于String.xml)
escape esc
increment inc
infomation info
initial init
image img (主要用于资源ID)
Internationalization I18N
length len
library lib
message msg
password pwd
position pos
server srv
string str
temp tmp
window wnd(win)

包(packages)

全部使用小写字母。一级包名常见的有:com/cn/org/net,二级包名以公司或个人来命名,三级包名根据应用进行命名,四级包名为模块名或层级名。

例如: com.classic.stock com.classic.stock.user

类(classes)

采用大驼峰命名法,所有单词的首字母大写,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。

例如:

描述 例如
activity 类 Activity为后缀标识 欢迎页面类WelcomeActivity
Adapter类 Adapter 为后缀标识 新闻详情适配器 NewDetailAdapter
解析类 Hlr为后缀标识 首页解析类HomePosterHlr
公共方法类 Tools、Utils或Manager为后缀标识 线程池管理类:ThreadPoolManager

日志工具类:DateTools、LogUtils
数据库类 | 以DBHelper后缀标识 | 新闻数据库:NewDBHelper
Service类 | 以Service为后缀标识 | 时间服务TimeService
BroadcastReceiver类 | 以Receiver为后缀标识 | 时间通知TimeReceiver
数据共享类 | 以Provider为后缀标识 | ContentProvider
共享基础类 | 以Base开头 | BaseActivity,BaseFragment,BaseAdapter

接口(interface)

接口名称以 I 开头,如果有多个单词,每个单词首字母大写,命名规则与类一样采用大驼峰命名法,多以able或ible结尾,如interface Runnable ;

功能 描述 例如
协议操作 实现协定的方法,以I开头 IContract
回调 当做参数传入回调,多以Callback结尾 xUtils:RequestCallback
子进程操作 作为线程的事件执行,多以Runnable结尾 DealContractRunnable
事件监听器 以On开头,以Listener结尾 单击事件:OnClickListener

列表单击事件OnItemClickListener

方法(methods)

采用小驼峰命名法,除首单词外,其余所有单词的首字母大写。

方法 描述
initXX() 初始化相关方法,使用init为前缀标识,如初始化布局initView()
isXX() checkXX()方法返回值为boolean型的请使用is或check为前缀标识
getXX() 返回某个值的方法,使用get为前缀标识
processXX() 对数据进行处理的方法,尽量使用process为前缀标识
showXX() 弹出提示框和提示信息,使用show为前缀标识
saveXX() 与保存数据相关的,使用save为前缀标识
resetXX() 对数据重组的,使用reset前缀标识
clearXX() 清除数据相关的
removeXXX() 删除数据相关的
drawXXX() 绘制数据或效果相关的,使用draw前缀标识
getXXX()、setXXX() 成员变量的Getter、Setter方法,不含有成员变量前缀m

参数(parameter)

采用小驼峰命名法 ,除首单词外,其余所有单词的首字母大写,尽量避免使用单字母变量,变量名表面意思能够让人知晓用途,建议用JavaDoc在前面进行注释。

描述
page 页码
pageSize 每一页含有的条数
userName 用户名

变量(variables)

采用小驼峰命名法 ,除首单词外,其余所有单词的首字母大写。

描述 例如
局部变量 采用小驼峰命名法 page
全局变量(成员变量) 采用小驼峰命名法,以m开头 mPageSize

常量(constants)

全部大写,单词之间用下划线分割。对于通知类,界面传递变量的常量KEY,尽量使用同一常量类进行管理,避免常量值相同造成混淆。

常量 描述
DB_VERSION 数据库版本
DB_NAME 数据库名
SERVER_URL 服务器地址

资源文件

用途 描述 例如
图标图片 前缀+模块+描述,以ic开头 ic_main_search.png
背景图片 前缀+模块+描述,以bg开头 bg_banner.png
Activity Layout布局 前缀+模块+描述 activity_main.xml

fragment_main.xml

dialog_single_input.xml
Layout布局 | 模块名称+逻辑名称 | books_comment.xml

popup_listview_item.xml
Shape文件 | 前缀+模块+逻辑名称,

放在drawable文件夹下 | 按下前:

btn_login_normal.xml

按下时:

btn_login_pressed.xml

默认:

btn_login_default.xml

不可用:

btn_login_disable.xml
Selector文件 | 前缀+模块,

放在drawable文件夹下 | selector_login.xml

Layout中的id命名

建议用layout文件名称做view+逻辑名称缩写,同一布局内不要重复,使用不易混淆的已使用过的ID(避免给aaa,bbb,ccc,过短的或者没意义的命名方式),尽量使用长名称,均以"@+id"开头,页面控件名称应该和控件id名保持一致,由于使用ButterKnife工具导入,建议使用小驼峰法命名,才符合变量命名

用途 描述 例如
图片ImageView 控件缩写+属性+(逻辑模块,多页面使用可无) @+id/imgHeaderListViewItem
文本TextView 控件缩写+属性+(逻辑模块,多页面使用可无) @+id/tvListViewItem
复选框CheckBox 控件缩写+属性+(逻辑模块,多页面使用可无) @+id/checkBoxListViewItem
LinearLayout 控件缩写+属性+(逻辑模块,多页面使用可无) @+id/ll_content/@+id/layoutContent
RelativeLayout 控件缩写+属性+(逻辑模块,多页面使用可无) @+id/rl_content/@+id/layoutContent

资源文件夹的使用

手机常见分辨率:

分辨率 描述
4:3
VGA 640*480 (Video Graphics Array)
QVGA 320*240 (Quarter VGA)
HVGA 480*320 (Half-size VGA)
SVGA 800*600 (Super VGA)
5:3
WVGA 800*480 (Wide VGA)
16:9
FWVGA 854*480 (Full Wide VGA)
HD 1920*1080(High Definition)
QHD 960*540
720p 1280*720 标清
1080p 1920*1080 高清
dpi范围 �密度 分辨率 倍数
0dpi ~ 120dpi ldpi HVGA 0.75x
120dpi ~ 160dpi mdpi HVGA 1x
160dpi ~ 240dpi hdpi WVGA/FWVGA/QHD 1.5x
240dpi ~ 320dpi xhdpi 720P 2x
320dpi ~ 480dpi xxhdpi 1080P 3x
480dpi ~ 640dpi xxxhdpi 1440P 4x

项目一般提供3x,2x图,放在响应的文件夹内,新项目使用mipmap文件夹。

图片放错容易产生的问题是? 如果将一张图片放在低密度文件夹下,那么在高密度设备上显示图片时就会被自动放大,而如果将一张图片放在高密度文件夹下,那么在低密度设备上显示图片时就会被自动缩小。 一张原图片被缩小了之后显示其实并没有什么副作用,但是一张原图片被放大了之后显示就意味着要占用更多的内存了。

例如:将android_logo.png图片移动不同位置

情况一 情况二
drawable-xxhdpi drawable-mdpi

图标大小

DENSITY SIZE LOCATION RATIO SCREEN MARGIN
XXXHDPI 192×192 drawable-xxxhdpi 4 640 DPI 12 to 16 pixels
XXHDPI 144×144 drawable-xxhdpi 3 480 DPI 8 to 12 pixels
XHDPI 96×96 drawable-xhdpi 2 320 DPI 6 to 8 pixels
HDPI 72×72 drawable-hdpi 1.5 240 DPI 4 to 6 pixels
MDPI 48×48 drawable-mdpi 1 160 DPI 3 to 4 pixels
MDPI 48×48 drawable (Cupcake) 1 160 DPI 3 to 4 pixels
LDPI 36×36 drawable-ldpi 0.75 120 DPI 2 to 3 pixels
NA 512×512 Google Play NA NA As required

Launcher Icons 放在mipmap中

XXXHDPI 192×192

XXHDPI 144×144

XHDPI 96×96
HDPI 72×72
MDPI 48×48

Notification Icons 放在drawable中

Paste_Image.png
Paste_Image.png
DENSITY SIZE LOCATION RATIO SCREEN MARGIN
XXHDPI 75×75 drawable-xxhdpi 3 480 DPI 15 to 17 pixels
XXHDPI 48×75 drawable-xxhdpi-v9 3 480 DPI 5 to 19 pixels
XXHDPI 72×72 drawable-xxhdpi-v11 3 480 DPI 8 to 11 pixels
XHDPI 50×50 drawable-xhdpi 2 320 DPI 3 to 4 pixels
XHDPI 32×50 drawable-xhdpi-v9 2 320 DPI 3 to 12 pixels
XHDPI 48×48 drawable-xhdpi-v11 2 320 DPI 5 to 6 pixels
HDPI 38×38 drawable-hdpi 1.5 240 DPI 3 pixels
HDPI 24×38 drawable-hdpi-v9 1.5 240 DPI 2 to10 pixels
HDPI 36×36 drawable-hdpi-v11 1.5 240 DPI 3 to 5 pixels
MDPI 25×25 drawable-mdpi 1 160 DPI 2 pixels
MDPI 16×23 drawable-mdpi-v9 1 160 DPI 1 to 6 pixels
MDPI 24×24 drawable-mdpi-v11 1 160 DPI 3 pixels

ActionBar or Tab Bar Icons 放在drawable中

DENSITY SIZE LOCATION RATIO SCREEN MARGIN
XXHDPI 96×96 drawable-xxhdpi 3 480 DPI 17 to 19 pixels
XHDPI 64×64 drawable-xhdpi 2 320 DPI 10 to 13 pixels
HDPI 48×48 drawable-hdpi 1.5 240 DPI 8 to 9 pixels
MDPI 32×32 drawable-mdpi 1 160 DPI 6 to 7 pixels
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 40,937评论 0 48
  • 还记得刚开始coding的时候,命名都是汉语拼音,所以有的时候想看懂它的意思,就要读一遍甚至好几遍才知道,这还是在...
    leo62阅读 8,824评论 2 19
  • Java类类名:大驼峰命名,所有单词首写字母大写,并且类名最好为名词.正确public class People{...
    WilsonMing阅读 763评论 0 2
  • 无论是哪种编程语言的学习,我们的命名都要有一定的规范才能更好的进行团队协作,更好的进行代码的的二次开发。所以在这里...
    李庆文阅读 649评论 2 3
  • Android编码规范 源文件基础 文件名 源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。 文...
    呼呼哥阅读 928评论 0 0