一、背景
2017年3月份8号参加了公司某APP研发会议,任务周期是一个星期的时间,并且是接口和APP同时开发,通过会议了解到APP预计要开发近百个页面,这对我来说是个几乎不能完成的任务,但是最终在规定时间内完成了所有功能开发。
二、快速的开发APP
1.前期的准备工作
在应急APP开发任务之前,有一段项目后不忙碌时间,在这期间,我看技术博客以及技术书籍,然后将所学习的知识进行编写Demo,而这些Demo为我下面的快速开发打下了基础
2.关于开发工具
了解你的工具,我使用的是android
studio来进行android开发,了解和熟悉android sudio会大大提高自己的开发效率。
2.1使用键盘快捷键更快
下面就简单列举一些我在开发中常常用到的快捷键:
Ø代码提示
“Control + Space”可以在代码任意地方调出代码提示,通过Enter键可以完成提示的输入。另外Tab键同样也可以完成输入,区别是它会将后面已经输入的提示全部删掉,而Enter会保留。
“Control +
Shift + Space”提示了更加智能的代码。
“Option + Enter”可以获取代码的修改提示,不用每次再用鼠标去点击出现错误的小红点。
例如:Log.i(TAG,"TEST");点击Option+Enter可以快速的获取代码提示,创建Tag.
Ø快速提示
“ALT + Enter”当你写完一行代码时,还差一个分号、换行,并格式化代码,出现错误,需要获得错误提示。
Ø快速定位代码错误位置
“F2”当你的代码出现错误时,可以按“F2”快速定位到错误位置
Ø代码格式化
“Ctrl+Alt+L”
Ø生成代码
“Alt+Insert”当你需要重载某个父类方法或生成get、set方法
Ø其他
还有更多方面的快捷键请参考:
http://www.android-studio.org/index.php/docs/experience/142-androidstudio-shortcut-keys
2.2使用插件变得更有效率
ØTranslate
翻译插件,自己英文不好,使用这个插件可以大大提升英文翻译效率
ØAndroid Studio Prettify
从布局文件中生成对View的声明(不使用注解)
ØGsonFormat
根据json数据格式返回生成相应的实体类
2.3使用Live Templates
Live Template是展示在代码完成选项中的快捷方式,当你选择它时,IDE就会插入一段代码片段,并让你在需要输入参数的地方进行后续输入。
例如:“fbc”对应findViewById、对象.for可以自动生成for循环等
3.关于封装
Ø基类库
采用是公司android开发的基础框架库,里面针对Activity、Dialog等组件进行了封装,使我们开发效率大大提升。
Ø网络请求库
App中少不了要用到网络请求,网上已经有很多优秀的网络请求框架okhttp、asynchttp等,如果我们直接使用第一是如果要更改参数那么所有使用到地方都需要更改,第二是如果要跟换网络请求框架也需要修改全部代码,所以我针对网络请求采用工厂模式进行了二次封装:
1.创建网络请求及网络请求回调接口
2.创建网络请求实现类
3.创建网络请求工厂类
通过这三步的封装,我们后面的网络调用就变得非常的另外,并且可是随时更换网络请求框架并且只需要在工厂类替换网络请求实现。
Ø图片加载库
图片库的封装和网络请求库一样的原理。
Ø数据库操作封装
数据库我们采用的是GreenDao框架,在之前的开发中使用GreenDao查询一个数据集采用以下写法:
Queryquery=oaApplication.getDaoSession().getBaseListDao()
.queryBuilder().where(BaseListDao.Properties.CodeType.eq(strings[downcount]),BaseListDao.Properties.Rid.eq(baseInfos.get(i).getRid()))
.build();
List infos = query.list();
这样写也比较方便,但是要返回不同类型数据就要创建不同类型的QueryBuilder,所以我对GreenDao采用泛型进行了操作封装:
1.创建数据库操作接口类
2.创建数据库操作实现类
3.创建数据库操作工厂类
经过封装之后请求网络采用下面的写法:
Listinfos=DBManagerFactory.getDBManagerImpl().queryListAll(BaseList.class, "codeType =" + strings[downcount] +" and rid = " +baseInfos.get(i).getRid());
4.关于第三方库
使用第三方库能够大大提高我们的开发效率,每个人习惯的库不一样,下面就是我经常使用的第三方库
Ø网络请求android-async-http
Ø数据库greenDAO(建议使用3.0以上版本,使用注解生成对应Dao类非常方便)
ØJson数据解析FastJason
Ø图片加载Glide
5.关于布局
在APP开发中还有一项重要的工作就是UI布局,要提高开发效率,提高布局的效率也是重中之重。
Ø清晰标注的设计图
当我们拿到UI设计图,如果色值、大小都没有明确的标识,那我们肯定是两眼一抹黑,所以我们需要美工人员配合给我们的设计稿是有明确标识的,这样我们才能开展下一步的工作。
Ø使用统一的Values资源属性
一般来说我们很多的组件的颜色和字体是有一定的共通性的,我们要提取这一部分属性在我们的资源内建立统一的属性如color.xml、dimens.xml等,这样如果一旦共性的属性要更改我们只需要更改对应资源属性即可完成所有页面的更改。
Ø使用样式
每个页面标题栏的标题基本会有一样的字体大小、颜色、对齐方式、内间距、外间距等,很多按钮也都使用一致的背景、内间距、文字颜色、文字大小、文字的对齐方式,这个时候我们如果为每个组件来进行属性的设置那么工作量极大,而且一旦属性发生变动那么对应的每个组件都必须重新修改,这个时候我们定义成样式,相同属性的组件设置统一的样式,这样不仅大大提升布局的效率,也提高了后期UI变动的方便性。
Ølayout
xml中使用include
在APP开发中很多布局的部分内容是重复的,例如每个页面的标题栏,为了页面的复用,我们可以将标题栏独立成一个布局xml,然后使用include标签来使用它,如下:
Øtools:attribute
在UI布局的时候,我们希望看到TextView在有文字时候的预览情况,之前我是直接给Text赋值,但是这样一旦你在代码中忘记给Text赋值,那么你界面显示就是测试值,使用'tools:something="value"'这个值会显示在预览时候,但是在软件真正运行的时候不会出现这个内容:
1.在根布局中添加xmlns:tools=http://schemas.android.com/tools
2.在TextView中使用'tools:text="value"'属性
ØExtractResource
比如你在布局文件或者代码文件中直接写了某个String字符串或者某个dimen数值,而不是引用资源文件,这个时候我们可以选中那个值,然后按alt+enter键选择Extract String/Dimension Resource输入资源名称,就自动创建了资源文件。
6.关于代码
Ø代码复用
在开发APP的过程很多获取基本数据的代码是相同的,为了提高开发效率,我们将这部分代码放到公共类里面,这样所有的地方都可以使用,实现了代码复用。
Ø灵活的界面显示
在APP的开发过程中,每个功能都一个对应的详情页面,如果每个详情页面都进行单独开发意味着要多开发几十个页面,这是时候我们和后端的同事进行讨论所有的详情页面采用统一的数据返回格式,将不同的布局风格按照编号分类,这样我们APP端只需要按照这些规则做一个共用的详情页,根据不同的编号生成不同的布局,通过这个共用页面让我能够在短时间内完成APP的开发,同时将原本预计近百个页面压缩至60几个。