在互联网迅速发展的今天,程序员真的有点烂大街了,最近频繁听到朋友都工做了,又去转行作开发的,去培训机构培训而后出来长时间找不到工做的。各类跨专业、工做后转型。互联网行业竞争愈来愈激烈的今天,高效的快速开发,稳固的基础才是从中取胜的关键。今天向Android开发者推荐一些开发的插件及其一些开发的技巧,只是我的的一些愚见,但愿对你有所帮助。java
代码的规范对于一个程序员的长远发展是至关重要的,android的代码规范其实和java是基本上同样的,这里推荐阿里巴巴java开发手册,阿里还在不断更新完善,感谢阿里为业内人士作的巨大贡献,这一小步,影响很大。若是全部人都按照这个规范,当你接手别人的项目的时候还在为这个代码块是干什么的,项目的迭代去抓耳挠腮吗???android
说到这里,不少人应该都会比较熟悉JakeWharton大神贡献的butterknife,相似的依赖注入还有androidannotations、Dagger 2,可是用这些真的好吗???实际上是很影响性能的,这里以butterknife的源码来分析ios
ButterKnife.bind过程git
源码看进去程序员
static void bind(@NonNull Object target, @NonNull Object source, @NonNull Finder finder) {
Class<?> targetClass = target.getClass();
try {
ViewBinder<Object> viewBinder = findViewBinderForClass(targetClass);
viewBinder.bind(finder, target, source);
} catch (Exception e) {
//省略异常处理
}
}复制代码
再来看看另一个方法github
private static ViewBinder<Object> findViewBinderForClass(Class<?> cls)
throws IllegalAccessException, InstantiationException {
ViewBinder<Object> viewBinder = BINDERS.get(cls);
//先找缓存
if (viewBinder != null) {
return viewBinder;
}
//检查下是否支持这个类
String clsName = cls.getName();
if (clsName.startsWith("android.") || clsName.startsWith("java.")) {
return NOP_VIEW_BINDER;
}
try {
//找到类名为 Activity 的类名加 "$$ViewBinder" 的类,实例化,并返回
Class<?> viewBindingClass = Class.forName(clsName + "$$ViewBinder");
//noinspection unchecked
viewBinder = (ViewBinder<Object>) viewBindingClass.newInstance();
} catch (ClassNotFoundException e) {
//注意这里支持了继承关系
viewBinder = findViewBinderForClass(cls.getSuperclass());
}
//缓存 viewBinder
BINDERS.put(cls, viewBinder);
return viewBinder;
}复制代码
看完源码ButterKnife对性能有必定的影响,而且引入了更多的类和方法,增长了安装包的大小。可是,对开发效率的提高也是显而易见的,尤为是配合AS插件的使用。如何取舍,彻底是由做为开发者的你来决定了。其余的几个注入的第三方库相似的,因此在这里为了避免影响性能,又避免写findViewById,所以推荐LayoutCreator算法
安装数据库
方式一. 下载项目中的jar包,经过本地disk方式导入json
方式二. 在Android Studio的插件中心搜索LayoutCreator下载安装android-studio
用法截图
有了上面的LayoutCreator神器,再加上这个神器,估计差很少省去了不少coding的时间了,是否是感受终于有时间腾出来谈个女友了呀!!!祝没有女友的攻城狮们早日找到女友。。。
安装
方式一. 下载项目中的jar包,经过本地disk方式导入
方式二. Preferences/Settings->Plugins->Browse repositories... 而后在搜索框输入Android code Generator。
用法截图
还在为返回JSONObject格式的字符串而一个一个对着写参数吗???GsonFormat一个根据JSONObject格式的字符串,自动生成实体类参数。 之后写实体类就是秒秒钟的事!!!
安装
方式一. 下载GsonFormat.jar包,经过本地disk方式导入
方式二. Android studio File->Settings..->Plugins–>Browse repositores..搜索GsonFormat,安装插件,重启android studio
用法截图
安装方式都有两种,能够参考上面进行安装
设计师给咱们提供好了各类资源,每一个按钮都要写一个selector是否是很麻烦?这么这个插件就为解决这个问题而生,你只须要作的是告诉设计师们按照规范命名就行了,其余一键搞定。
强烈推荐,帮助你在开发阶段方便的检测出内存泄露的问题,使用起来更简单方便。
强大的让全部人都认识
Android Parcelable code generator
在类中插入实现了Parcelable接口的代码。
Android Material Design Icon Generator
将Material Design的图标导入到程序中。
这是一个很是强大的图片导入插件。它导入Android图标与Material图标的Drawable ,批量导入Drawable ,多源导入Drawable(即导入某张图片各类dpi对应的图片)
Android studio的插件还有不少不少,选择一些经常使用的,别装太多插件哦,要是你想要什么功能的插件可留言,我为你推荐
Android是开源的,所以也诞生了一批又一批的开源大牛,而后这些大牛写了牛逼的开源库,让咱们今天的工做更简单,在这里想你们介绍一些经常使用的开源库
okhttp
okhttp相关延伸:Fast-Android-Networking、okhttputils、NoHttp
retrofit 这是一个很高深的网络请求,基于okhttp
如今主流的是这两个,还有volley、xutil等就不在介绍了
参考刷新加载控件
其实为我的不建议使用事件总线,由于代码逻辑不清楚,后期迭代维护麻烦;观察者独有的,观察者可能会形成接口的膨胀
AndroidSwipeLayout别人讨厌各类仿ios什么效果,程序员能够写着玩玩没问题。仿iOS各类左右滑效果
circular-progress-button带进度显示的Button,让操做更炫酷
ToggleButton状态切换的 Button,相似 iOS,用 View 实现
AndPermission权限管理
AndroidUtilCode工具类大集合
注意事项
避免黄色警告
过期方法不要用
include的使用
merge的使用
viewstub的使用
避免布局嵌套过深;简单布局linearlayout,复杂布局relativelayout;有些效果多考虑自定义view是否能实现,别用view叠加实现
style的使用,减小代码量
weight的合理使用
margain和padding合理比较进行选择使用
最新的布局方式ConstaintLayout的使用
避免没必要要的渲染,可借助第三方工具
注意事项
为了提升UE,需考虑缓存、数据存储优化、算法优化、JNI、逻辑优化、需求优化(后面会详细述说优化相关)
代码结果清晰,多方法,避免一个方法执行不少行代码
避免警告;多作异常处理;判断条件多考虑
注意事项
AndroidStudio的lint清除无用的资源
注意第三方引入的资源删除时需注意(典型:某盟)
重点推荐:多coding,多看底层,知其然知其因此然