Android开发推荐

Android开发推荐

在互联网迅速发展的今天,程序员真的有点烂大街了,最近频繁听到朋友都工作了,又去转行做开发的,去培训机构培训然后出来长时间找不到工作的。各种跨专业、工作后转型。互联网行业竞争越来越激烈的今天,高效的快速开发,稳固的基础才是从中取胜的关键。今天向Android开发者推荐一些开发的插件及其一些开发的技巧,只是个人的一些愚见,希望对你有所帮助。

代码的规范

代码的规范对于一个程序员的长远发展是相当重要的,android的代码规范其实和java是基本上一样的,这里推荐阿里巴巴java开发手册,阿里还在不断更新完善,感谢阿里为业内人士做的巨大贡献,这一小步,影响很大。如果所有人都按照这个规范,当你接手别人的项目的时候还在为这个代码块是干什么的,项目的迭代去抓耳挠腮吗???

Android高效开发工具推荐

Android Studio 自动生成布局代码插件LayoutCreator

说到这里,很多人应该都会比较熟悉JakeWharton大神贡献的butterknife,类似的依赖注入还有androidannotationsDagger 2,但是用这些真的好吗???其实是很影响性能的,这里以butterknife的源码来分析

ButterKnife.bind过程

源码看进去

1
2
3
4
5
6
7
8
9
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) {
//省略异常处理
}
}

再来看看另外一个方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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方式导入

    方式二. 在Android Studio的插件中心搜索LayoutCreator下载安装

用法截图
image

Android Code Generator根据布局文件快速生成对应的Activity,Fragment,Adapter,Menu。

有了上面的LayoutCreator神器,再加上这个神器,估计差不多省去了很多coding的时间了,是不是感觉终于有时间腾出来谈个女朋友了呀!!!祝没有女朋友的攻城狮们早日找到女朋友。。。

  • 安装

    方式一. 下载项目中的jar包,通过本地disk方式导入

    方式二. Preferences/Settings->Plugins->Browse repositories… 然后在搜索框输入Android code Generator。

用法截图
image

插件GsonFormat快速实现JavaBean

还在为返回JSONObject格式的字符串而一个一个对着写参数吗???GsonFormat一个根据JSONObject格式的字符串,自动生成实体类参数。 以后写实体类就是秒秒钟的事!!!

  • 安装

    方式一. 下载GsonFormat.jar包,通过本地disk方式导入

    方式二. Android studio File->Settings..->Plugins–>Browse repositores..搜索GsonFormat,安装插件,重启android studio

用法截图
gsonFormat.gif

其他插件推荐

安装方式都有两种,可以参考上面进行安装

SelectorChapek

设计师给我们提供好了各种资源,每个按钮都要写一个selector是不是很麻烦?这么这个插件就为解决这个问题而生,你只需要做的是告诉设计师们按照规范命名就好了,其他一键搞定。

LeakCanary

强烈推荐,帮助你在开发阶段方便的检测出内存泄露的问题,使用起来更简单方便。

Genymotion

强大的让所有人都认识

Android Parcelable code generator

在类中插入实现了Parcelable接口的代码。

Android Material Design Icon Generator

将Material Design的图标导入到程序中。

Android Drawable Importer

这是一个非常强大的图片导入插件。它导入Android图标与Material图标的Drawable ,批量导入Drawable ,多源导入Drawable(即导入某张图片各种dpi对应的图片)

Android studio的插件还有很多很多,选择一些常用的,别装太多插件哦,要是你想要什么功能的插件可留言,我为你推荐

常用开源库

Android是开源的,因此也诞生了一批又一批的开源大牛,然后这些大牛写了牛逼的开源库,让我们今天的工作更简单,在这里想大家介绍一些常用的开源库

网络请求

okhttp
okhttp相关延伸:Fast-Android-NetworkingokhttputilsNoHttp

retrofit 这是一个很高深的网络请求,基于okhttp

现在主流的是这两个,还有volley、xutil等就不在介绍了

数据解析

gson

fastjson

照片加载

glide

fresco

picasso

数据库

greenDAO

ormlite

LitePal

realm-java

刷新控件

参考刷新加载控件

事件总线

其实为个人不建议使用事件总线,因为代码逻辑不清楚,后期迭代维护麻烦;观察者独有的,观察者可能会造成接口的膨胀

EventBus

圆角

CircleImageView

图表

MPAndroidChart

SmallChart

WilliamChart

hellocharts-android

ImageVie手势操作

PhotoView

PinchImageView

照片选择器

TakePhoto

PhotoPicker

MultiImageSelector

loading框

AVLoadingIndicatorView

Android-SpinKit

LoadingDrawable

LoadingView

自定义对话框

sweet-alert-dialog

dialogplus

MaterialDialog

material-dialogs

媒体播放器

  • 视频

JieCaoVideoPlayer

ExoPlayer

PLDroidPlayer

GSYVideoPlayer

  • 音频

android-UniversalMusicPlayer

Timber

  • 直播

SmarterStreaming

其他推荐

RxJava

RxAndroid

AndroidSwipeLayout别人讨厌各种仿ios什么效果,程序员可以写着玩玩没问题。仿iOS各种左右滑效果

circular-progress-button带进度显示的Button,让操作更炫酷

ToggleButton状态切换的 Button,类似 iOS,用 View 实现

AndPermission权限管理

AndroidUtilCode工具类大集合

代码撰写注意点

xml布局

  • 注意事项

    • 避免黄色警告

    • 过时方法不要用

    • include的使用

    • merge的使用

    • viewstub的使用

    • 避免布局嵌套过深;简单布局linearlayout,复杂布局relativelayout;有些效果多考虑自定义view是否能实现,别用view叠加实现

    • style的使用,减少代码量

    • weight的合理使用

    • margain和padding合理比较进行选择使用

    • 最新的布局方式ConstaintLayout的使用

    • 避免不必要的渲染,可借助第三方工具

java代码

  • 注意事项

    • 为了提高UE,需考虑缓存、数据存储优化、算法优化、JNI、逻辑优化、需求优化(后面会详细述说优化相关)

    • 代码结果清晰,多方法,避免一个方法执行很多行代码

    • 避免警告;多做异常处理;判断条件多考虑

资源管理

  • 注意事项

    • AndroidStudio的lint清除无用的资源

    • 注意第三方引入的资源删除时需注意(典型:某盟)

重点推荐:多coding,多看底层,知其然知其所以然

坚持原创技术分享,您的支持将鼓励我继续创作!
Fork me on GitHub