1、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 -
2、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. 第三
3、方库收录 - 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例如:Re
4、gexUtil,表示正则表达式工具类2.1.3. 变量命名2.1.3.1. 局部变量、静态成员变量只能包含字母,变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。如: txtViUsernametxtViPassword2.1.3.2. 常量只能包含字母和_,字母全部大写,单词之间用_隔开如:MAX_COUNT2.1.4. 资源名称2.1.4.1. layout资源文件名称如果此资源文件为activity界面资源文件,则名称为Activity类名称的逻辑名称部分+_activity。如:如果Activity类名为MainActivity则资源文件名为main_activity.xml
5、下面是项目截图:2.1.4.2. Layout布局中ID命名命名格式:控件缩写_模块名称_控件的逻辑名称注意:资源中ID命名全部小写例如:btn_usermanage_addbtn_usermanage_delete控件名称缩写参考下面“Activity中控件变量的命名”中表格部分。类名缩写LayoutViewlayviRelativeViewrltviTextViewtxtviButtonbtnImageButtonimgbtnImageViewimgvivideoViewvdoviWebViewwebviScroollViewsclviGridViewgridviListViewlistv
6、iMapViewmapviEditTextedttxtAutoCompleteTextViewautotxtviMultiAutoCompleteTextViewmulautotxtviCheckBoxchkRadioButtonrdobtnDatePickerdtpkToggleButtontglbtnProgressBarprobarSeekBarskbarSpinnerspinTabtabImageSwitcherimgswtTextSwitchertxtswtChronnometercmtTimePickertmpkZoomControlszmctrlAnalogClockanaclk
7、DigitalClockdgtclkRatingBarratbarGallerygal下面是项目截图:2.1.4.3. Acivity中的控件变量命名命名格式:控件名称缩写+逻辑名称例如: btnAdd(添加按钮)、txtViName(姓名文本域)类名缩写LayoutViewlayViRelativeViewrltViTextViewtxtViButtonbtnImageButtonimgBtnImageViewimgVivideoViewvdoViWebViewwebViScroollViewsclViGridViewgridViListViewlistViMapViewmapViEditT
8、extedtTxtAutoCompleteTextViewautoTxtViMultiAutoCompleteTextViewmulAutoTxtViCheckBoxchkRadioButtonrdoBtnDatePickerdtPkToggleButtontglBtnProgressBarproBarSeekBarskBarSpinnerspinTabtabImageSwitcherimgSwtTextSwitchertxtSwtChronnometercmtTimePickertmPkZoomControlszmCtrlAnalogClockanaClkDigitalClockdgtClk
9、RatingBarratBarGallerygal下面是项目截图:2.1.4.4. strings.xml中的id命名命名格式:activity名称_功能模块名称_逻辑名称activity名称_逻辑名称common_逻辑名称注意:配置文件中ID的命名全部小写在strings.xml文件中,使用activity名称注释,将文件内容区分开来下面是项目截图:2.1.4.5. drawable中的图片命名命名格式:activity名称_功能模块名称_逻辑名称activity名称_逻辑名称common_逻辑名称注意:字母全部小写除Activity中用到的资源外,对于通用控件用到的资源统一以common_
10、开头下面是项目截图:2.2. 其他规范代码和Layout界面布局文件中不要出现中文,注释中可以出现。将使用的提示信息输出、View的显示名称都放在string.xml配置文件中;如果某功能在服务端可以实现的话,就不要放在客户端中实现。减少更新升级风险;引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大,同时必须验证使用的第三方库的稳定性。确实有必要使用的需要讨论决定才可以使用;不要使用静态变量方式实现界面间数据的共享;除非共享的数据时程序运行期间一直要使用的,不仅仅是为了两个界面间的数据传递;activity中实现View.OnClickListener接口,在此实现中处理所有的
11、逻辑。可以方便的找到所有按钮的具体实现代码;软键盘的弹出控制,不要让其覆盖输入框;严格定义程序横屏和竖屏适应性,一般拍照、视频、游戏都采用横屏方式,及时通讯IM、办公业务系统应用都采用竖屏方式;3. 界面规范3.1. 图标规范3.1.1. 适配性为了简化设计并且兼容更多的手机屏幕,平台依照尺寸和分辨率对屏幕进行了区分,三种尺寸:大,中,小。三种精度:高(hdpi),中(mdpi)和低(ldpi)。程序自动为这三种尺寸的屏幕提供默认资源,如有需要,还可以为各种精度的屏幕提供资源。图标类型低(px)中(px)高(px)Launcher36*3648*4872*72Menu36*3648*4872*
12、72StatusBar24*2432*3248*48Tab24*2432*3248*48Dialog24*2432*3248*48ListView24*2432*3248*483.1.2. LauncherIcon图标色值标准Launcher Icon通常是一个较大的标准图标中包含一个小图标,使用一个中性色彩和一个主要色彩,并保持高度的对比,不宜过度饱和。下面是推荐的标准色值:#F2F2F2#BFBFBF#6699FF#99CC33#FFCC00#808080#3366CC#00CC00#FF9900#000000#404040#003399#6F9A17#FF6600#CC00003.2.
13、界面设计规范3.2.1. 一屏只做一件事对于一个显示界面中只处理一种业务,不允许将多种业务融合在一起处理。做到:用户看到就知道怎么用,而不是需要培训才可以使用软件。3.2.2. 动态布局对于按钮以及其他View控件不要使用绝对定位(左、上边距定位),使用动态布局定位,让程序自动适应不同手机屏幕大小。3.2.3. 常用内容置前对于常用的功能、按钮、菜单都放在最明显的位置,且可以轻松操作,对于不经常使用的功能可以放在隐藏的菜单或隐藏的工具条中。3.2.4. 提供适当的提示对于长时间的程序处理要有进度提示,但不要干扰或阻塞用户当前的操作。对于可点击或触摸的控件需要提供四种状态的变化:normal、d
14、isabled、focused、pressed,最少做到普通、按下两种变化效果。3.2.5. 人性化设计3.2.5.1. 按钮可以轻松点中对于按钮以及其他可以点击操作的区域要足够大,让用户可以轻松的点中。3.2.5.2. 风格一致界面风格保存一致,让用户容易投入其中,可附加少许变化。3.2.5.3. 有新意但要有章可循界面可以有新的创意,但设计的操作流程要遵循用户的期望;看着可以点击的按钮应该是可以点击的,看着可以返回的地方也应该是可以返回的。同时不要过多的出现对话框形式的提示,对用户的操作是一种干扰。3.2.5.4. 不要有太复杂的操作界面设计不要出现完成一项任务需要复杂的操作的情况,如果出
15、现这种情况需要从新考虑界面设计是否存在问题。3.2.5.5. 减少输入使用提示、默认值、选择等方式减少输入,为用户选择但最终让用户自己说了算。3.2.6. 了解用户了解用户的年龄,技能,文化,以及对应用的需求,使用的设备型号;何时何地使用、如何使用设备。在此基础上设计界面风格、布局、色调以及界面交互方式。4. 性能处理规范4.1. 网络http传输用gzip压缩,设置连接超时时间和响应超时时间;网络请求按照业务需求,分为可缓存、不可缓存;在无网络的环境中,对于缓存的数据仍然可以浏览,实现离线阅读;网络请求不可以放在主线程中,必须在其他线程中处理,如果需要用户等待网络处理完成才可以操作,必须增加
16、LOADING特效;4.2. 线程使用线程池,分为核心线程池和普通线程池,下载图片等耗时任务放置在普通线程池,避免耗时任务阻塞线程池后,导致所有异步任务都必须等待;异步任务的ui操作必须通过消息等方式通知主UI线程变更,同时需要判断接收UI消息的activity是否正在处于前置激活状态;主线程不要进行网络处理;主线程不要进行数据库处理;主线程不要进行文件处理;BaseAdapter避免内存溢出,如果BaseAdapter的实体类有属性非常消耗内存,可以将保存到文件;为提高性能,可以进行缓存,并限制缓存大小;管理好子线程的运行周期,防止线程生命周期不可控造成内存泄露。4.3. 图片对于图片的下载
17、显示采用异步加载方式,防止界面长时间等待;当快速滑动列表时(SCROLL_STATE_FLING),item中的图片或获取需要消耗资源的view,可以不显示出来;而处于其他两种状态(SCROLL_STATE_IDLE 和SCROLL_STATE_TOUCH_SCROLL),则将那些view显示出来;list中异步加载的图片,当不在可视范围内,按照一定的算法及时回收(如在当前可视范围的上下10条item以外的图片进行回收,或者将图片进行缓存,设置一个大小,按照最近最少使用原则超过部分进行回收);Activity的onDestroy时将bitmap回收;不要在被UI组件使用后马上进行回收,因为会抛
18、出异常;对于从服务器端下载使用的图片,保存多份不同采样率、不同大小的图片,以便在要求不高的地方下载小图片使用;要使用主题/样式、尺寸和颜色资源,来减少过多图片造成的界面冗余以及安装包过大。4.4. 耗电处理获取用户的地理位置信息时,在需要获取数据的时候打开GPS,之后及时关闭掉不要通过定时服务从服务器通过网络请求轮询数据,而是改用推送的方式处理。5. 兼容性规范5.1. Android版本兼容根据目前市场上使用Android手机的情况,程序从Android2.2版本开始兼容。创建工程时,如下图所示:5.2. Java编译兼容性项目的编译选项都选择1.6版本,如下图所示:5.3. 界面兼容5.3
19、.1. 屏幕适应在manifest配置文件中定义supports-sceens,支持所有屏幕,提高程序界面兼容性,防止出现屏幕占用部分空间的错误布局情况;配置内容如下: 5.3.2. 等分布局使用android:layout_weight或者TableLayout制作等分布局。5.3.3. 长度单位自适应屏幕,使用dp(dip)替代px(pix);如果是文本,使用sp。6. 工程结构根据以上规范写了一个例子,结构如下:7. 第三方库收录zxing:条码的生成与识别fastjson:json字符串的解析与生成,实现了实体对象和Json串的相互转换Android Asynchronous Http Client:包名为com.loopj.android.http,http和https异步请求,包括线程池管理、二进制下载上传、gzip压缩和解压
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2