Android应用程序开发规范.docx
- 文档编号:3572180
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:16
- 大小:256.62KB
Android应用程序开发规范.docx
《Android应用程序开发规范.docx》由会员分享,可在线阅读,更多相关《Android应用程序开发规范.docx(16页珍藏版)》请在冰豆网上搜索。
Android应用程序开发规范
Android应用程序开发规范
V1.0.1
目录
1.概述-3-
2.编码规范-3-
2.1.命名规范-3-
2.1.1.包命名规范-3-
2.1.2.类命名规范-4-
2.1.3.变量命名-4-
2.1.4.资源名称-5-
2.2.其他规范-10-
3.界面规范-11-
3.1.图标规范-11-
3.1.1.适配性-11-
3.1.2.LauncherIcon图标色值标准-11-
3.2.界面设计规范-12-
3.2.1.一屏只做一件事-12-
3.2.2.动态布局-12-
3.2.3.常用内容置前-12-
3.2.4.提供适当的提示-12-
3.2.5.人性化设计-12-
3.2.6.了解用户-13-
4.性能处理规范-13-
4.1.网络-13-
4.2.线程-14-
4.3.图片-14-
4.4.耗电处理-15-
5.兼容性规范-15-
5.1.Android版本兼容-15-
5.2.Java编译兼容性-15-
5.3.界面兼容-16-
5.3.1.屏幕适应-16-
5.3.2.等分布局-16-
5.3.3.长度单位-16-
6.工程结构-16-
7.第三方库收录-17-
1.概述
此编码规范是在【java编码规范.doc】基础上专门针对Android设备增加的编码规范,原java编码规范有效,有冲突时以此规范为准。
2.编码规范
2.1.命名规范
2.1.1.包命名规范
除第三方包外,自己开发的类所用包名必须以com.css.开头。
创建工程项目时,如下图所示:
常用的包名如下:
2.1.2.类命名规范
2.1.2.1.Activity命名
命名格式:
逻辑名称+Activity
例如:
AudioRecordActivity,表示录音窗口
2.1.2.2.工具类命名
所有工具类都放在com.css.*.util包中
命名格式:
逻辑名称+Util
例如:
RegexUtil,表示正则表达式工具类
2.1.3.变量命名
2.1.3.1.局部变量、静态成员变量
只能包含字母,变量的名字必须用一个小写字母开头。
后面的单词用大写字母开头。
如:
txtViUsername
txtViPassword
2.1.3.2.常量
只能包含字母和_,字母全部大写,单词之间用_隔开
如:
MAX_COUNT
2.1.4.资源名称
2.1.4.1.layout资源文件名称
如果此资源文件为activity界面资源文件,则名称为Activity类名称的逻辑名称部分+_activity。
如:
如果Activity类名为MainActivity则资源文件名为main_activity.xml
下面是项目截图:
2.1.4.2.Layout布局中ID命名
命名格式:
控件缩写_模块名称_控件的逻辑名称
注意:
资源中ID命名全部小写
例如:
btn_usermanage_add
btn_usermanage_delete
控件名称缩写参考下面“Activity中控件变量的命名”中表格部分。
类名
缩写
LayoutView
layvi
RelativeView
rltvi
TextView
txtvi
Button
btn
ImageButton
imgbtn
ImageView
imgvi
videoView
vdovi
WebView
webvi
ScroollView
sclvi
GridView
gridvi
ListView
listvi
MapView
mapvi
EditText
edttxt
AutoCompleteTextView
autotxtvi
MultiAutoCompleteTextView
mulautotxtvi
CheckBox
chk
RadioButton
rdobtn
DatePicker
dtpk
ToggleButton
tglbtn
ProgressBar
probar
SeekBar
skbar
Spinner
spin
Tab
tab
ImageSwitcher
imgswt
TextSwitcher
txtswt
Chronnometer
cmt
TimePicker
tmpk
ZoomControls
zmctrl
AnalogClock
anaclk
DigitalClock
dgtclk
RatingBar
ratbar
Gallery
gal
下面是项目截图:
2.1.4.3.Acivity中的控件变量命名
命名格式:
控件名称缩写+逻辑名称
例如:
btnAdd(添加按钮)、txtViName(姓名文本域)
类名
缩写
LayoutView
layVi
RelativeView
rltVi
TextView
txtVi
Button
btn
ImageButton
imgBtn
ImageView
imgVi
videoView
vdoVi
WebView
webVi
ScroollView
sclVi
GridView
gridVi
ListView
listVi
MapView
mapVi
EditText
edtTxt
AutoCompleteTextView
autoTxtVi
MultiAutoCompleteTextView
mulAutoTxtVi
CheckBox
chk
RadioButton
rdoBtn
DatePicker
dtPk
ToggleButton
tglBtn
ProgressBar
proBar
SeekBar
skBar
Spinner
spin
Tab
tab
ImageSwitcher
imgSwt
TextSwitcher
txtSwt
Chronnometer
cmt
TimePicker
tmPk
ZoomControls
zmCtrl
AnalogClock
anaClk
DigitalClock
dgtClk
RatingBar
ratBar
Gallery
gal
下面是项目截图:
2.1.4.4.strings.xml中的id命名
命名格式:
activity名称_功能模块名称_逻辑名称
activity名称_逻辑名称
common_逻辑名称
注意:
配置文件中ID的命名全部小写
在strings.xml文件中,使用activity名称注释,将文件内容区分开来
下面是项目截图:
2.1.4.5.drawable中的图片命名
命名格式:
activity名称_功能模块名称_逻辑名称
activity名称_逻辑名称
common_逻辑名称
注意:
字母全部小写
除Activity中用到的资源外,对于通用控件用到的资源统一以common_开头
下面是项目截图:
2.2.其他规范
代码和Layout界面布局文件中不要出现中文,注释中可以出现。
将使用的提示信息输出、View的显示名称都放在string.xml配置文件中;
如果某功能在服务端可以实现的话,就不要放在客户端中实现。
减少更新升级风险;
引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大,同时必须验证使用的第三方库的稳定性。
确实有必要使用的需要讨论决定才可以使用;
不要使用静态变量方式实现界面间数据的共享;除非共享的数据时程序运行期间一直要使用的,不仅仅是为了两个界面间的数据传递;
activity中实现View.OnClickListener接口,在此实现中处理所有的逻辑。
可以方便的找到所有按钮的具体实现代码;
软键盘的弹出控制,不要让其覆盖输入框;
严格定义程序横屏和竖屏适应性,一般拍照、视频、游戏都采用横屏方式,及时通讯IM、办公业务系统应用都采用竖屏方式;
3.界面规范
3.1.图标规范
3.1.1.适配性
为了简化设计并且兼容更多的手机屏幕,平台依照尺寸和分辨率对屏幕进行了区分, 三种尺寸:
大,中,小。
三种精度:
高(hdpi),中(mdpi)和低(ldpi)。
程序自动为这三种尺寸的屏幕提供默认资源,如有需要,还可以为各种精度的屏幕提供资源。
图标类型
低(px)
中(px)
高(px)
Launcher
36*36
48*48
72*72
Menu
36*36
48*48
72*72
StatusBar
24*24
32*32
48*48
Tab
24*24
32*32
48*48
Dialog
24*24
32*32
48*48
ListView
24*24
32*32
48*48
3.1.2.LauncherIcon图标色值标准
LauncherIcon通常是一个较大的标准图标中包含一个小图标,使用一个中性色彩和一个主要色彩,并保持高度的对比,不宜过度饱和。
下面是推荐的标准色值:
#F2F2F2
#BFBFBF
#6699FF
#99CC33
#FFCC00
#808080
#3366CC
#00CC00
#FF9900
#000000
#404040
#003399
#6F9A17
#FF6600
#CC0000
3.2.界面设计规范
3.2.1.一屏只做一件事
对于一个显示界面中只处理一种业务,不允许将多种业务融合在一起处理。
做到:
用户看到就知道怎么用,而不是需要培训才可以使用软件。
3.2.2.动态布局
对于按钮以及其他View控件不要使用绝对定位(左、上边距定位),使用动态布局定位,让程序自动适应不同手机屏幕大小。
3.2.3.常用内容置前
对于常用的功能、按钮、菜单都放在最明显的位置,且可以轻松操作,对于不经常使用的功能可以放在隐藏的菜单或隐藏的工具条中。
3.2.4.提供适当的提示
对于长时间的程序处理要有进度提示,但不要干扰或阻塞用户当前的操作。
对于可点击或触摸的控件需要提供四种状态的变化:
normal、disabled、focused、pressed,最少做到普通、按下两种变化效果。
3.2.5.人性化设计
3.2.5.1.按钮可以轻松点中
对于按钮以及其他可以点击操作的区域要足够大,让用户可以轻松的点中。
3.2.5.2.风格一致
界面风格保存一致,让用户容易投入其中,可附加少许变化。
3.2.5.3.有新意但要有章可循
界面可以有新的创意,但设计的操作流程要遵循用户的期望;看着可以点击的按钮应该是可以点击的,看着可以返回的地方也应该是可以返回的。
同时不要过多的出现对话框形式的提示,对用户的操作是一种干扰。
3.2.5.4.不要有太复杂的操作
界面设计不要出现完成一项任务需要复杂的操作的情况,如果出现这种情况需要从新考虑界面设计是否存在问题。
3.2.5.5.减少输入
使用提示、默认值、选择等方式减少输入,为用户选择但最终让用户自己说了算。
3.2.6.了解用户
了解用户的年龄,技能,文化,以及对应用的需求,使用的设备型号;何时何地使用、如何使用设备。
在此基础上设计界面风格、布局、色调以及界面交互方式。
4.性能处理规范
4.1.网络
http传输用gzip压缩,设置连接超时时间和响应超时时间;
网络请求按照业务需求,分为可缓存、不可缓存;在无网络的环境中,对于缓存的数据仍然可以浏览,实现离线阅读;
网络请求不可以放在主线程中,必须在其他线程中处理,如果需要用户等待网络处理完成才可以操作,必须增加LOADING特效;
4.2.线程
使用线程池,分为核心线程池和普通线程池,下载图片等耗时任务放置在普通线程池,避免耗时任务阻塞线程池后,导致所有异步任务都必须等待;
异步任务的ui操作必须通过消息等方式通知主UI线程变更,同时需要判断接收UI消息的activity是否正在处于前置激活状态;
主线程不要进行网络处理;
主线程不要进行数据库处理;
主线程不要进行文件处理;
BaseAdapter避免内存溢出,如果BaseAdapter的实体类有属性非常消耗内存,可以将保存到文件;为提高性能,可以进行缓存,并限制缓存大小;
管理好子线程的运行周期,防止线程生命周期不可控造成内存泄露。
4.3.图片
对于图片的下载显示采用异步加载方式,防止界面长时间等待;
当快速滑动列表时(SCROLL_STATE_FLING),item中的图片或获取需要消耗资源的view,可以不显示出来;而处于其他两种状态(SCROLL_STATE_IDLE和SCROLL_STATE_TOUCH_SCROLL),则将那些view显示出来;
list中异步加载的图片,当不在可视范围内,按照一定的算法及时回收(如在当前可视范围的上下10条item以外的图片进行回收,或者将图片进行缓存,设置一个大小,按照最近最少使用原则超过部分进行回收);
Activity的onDestroy时将bitmap回收;不要在被UI组件使用后马上进行回收,因为会抛出异常;
对于从服务器端下载使用的图片,保存多份不同采样率、不同大小的图片,以便在要求不高的地方下载小图片使用;
要使用主题/样式、尺寸和颜色资源,来减少过多图片造成的界面冗余以及安装包过大。
4.4.耗电处理
获取用户的地理位置信息时,在需要获取数据的时候打开GPS,之后及时关闭掉
不要通过定时服务从服务器通过网络请求轮询数据,而是改用推送的方式处理。
5.兼容性规范
5.1.Android版本兼容
根据目前市场上使用Android手机的情况,程序从Android2.2版本开始兼容。
创建工程时,如下图所示:
5.2.Java编译兼容性
项目的编译选项都选择1.6版本,如下图所示:
5.3.界面兼容
5.3.1.屏幕适应
在manifest配置文件中定义supports-sceens,支持所有屏幕,提高程序界面兼容性,防止出现屏幕占用部分空间的错误布局情况;配置内容如下:
largeScreens="true" android: normalScreens="true"android: smallScreens="true" android: resizeable="true"android: anyDensity="true"/> 5.3.2.等分布局 使用android: layout_weight或者TableLayout制作等分布局。 5.3.3.长度单位 自适应屏幕,使用dp(dip)替代px(pix);如果是文本,使用sp。 6.工程结构 根据以上规范写了一个例子,结构如下: 7.第三方库收录 zxing: 条码的生成与识别 fastjson: json字符串的解析与生成,实现了实体对象和Json串的相互转换 AndroidAsynchronousHttpClient: 包名为com.loopj.android.http,http和https异步请求,包括线程池管理、二进制下载上传、gzip压缩和解压
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 应用程序 开发 规范