GitHub上流行的开源库,大大节省了开发者从0开始开发的时间,很多公司和个人都在GitHub上开源了自己的项目。今天我们就来梳理一下Android开发。一些非常流行的库也是我们必须要掌握的,以便我们在使用的时候能够快速的找到它们。这里的总结基本都是我们自己开发用的,也就是一些个人的看法,仅供参考,不具有权威性。一、网络库1、RetrofitRetrofit是Square开发的一个网络请求库,也是Android最流行的HttpClient库之一。越来越多的公司开始使用这个请求库,它可以和RxJava完美结合,就像官网介绍的那样,Retrofit是一个基于HTTP协议的类型安全的网络框架,服务于Android和Java语言。GitHub地址:RetrofitGitHub地址2.okhttp也是Square开发的网络请求库。它是一个基于HTTP和HTTP2.0协议的网络框架,服务于Java和Android客户端。okhttp在GitHub上以21Kstars排名第二位,在android字幕中被很多公司使用。从Retrofit2.0开始,内置了okhttp框架,Retrofit侧重于封装接口以满足业务需求,okhttp侧重于网络请求的效率和安全性。3.volleyGoogle的Andorid开发团队也意识到有必要简化HTTP通信操作,于是在2013年GoogleI/O大会上,推出了全新的网络通信框架——Volley,Volley在性能方面有了很大的提升。幅度的调整是为了适应数据量小但通信频繁的网络操作而设计的,对于数据量大的网络操作性能会很差。GitHub地址:volleyGitHub地址4.FastAndroidNetworking基于OkHttp的FastAndroidNetworking可以简化网络通信(无样板代码),让开发者可以轻松编写通信代码。它是一个轻量级、快速的网络通信库。尝试一下,您会爱上它的。GitHub地址:FastAndroidNetworkingGitHub地址2.图片加载库在Android设备上。快速高效地显示图像极为重要。过去很长一段时间,我们遇到过很多关于如何高效存储图片的问题,比如image太大,但是内存比较小,但是越来越优秀的开源框架的使用解决了我们的问题在这个区域。接下来,我们就来看看这些优秀的开源框架吧。1.Glide在泰国举行的谷歌开发者论坛上,谷歌向我们介绍了一个名为glide的图片加载框架,作者是bumptech。这个库在谷歌的开源项目中被广泛使用,包括在2014年谷歌I/O大会上发布的官方应用。GitHub地址:GlideGitHub地址2.fresco是一个管理图片内存的解决方案。是目前最大的图片加载框架之一。facebook的背景证明它不是一个重复制造的轮子。它管理图像内存和渐进格式加载和加载gif都具有独特的功能。GitHub地址:FrescoGitHub地址3.picasso是一个非常强大的图片下载和缓存框架。毕加索更强调图片下载。更重要的是,这也是方队的功劳。不得不提的是方队。使用起来还是很安全的。GitHub地址:picassoGitHub地址4.Android-Universal-Image-Loader看到这里,想必有经验的Android开发者都会非常熟悉。它曾经是载图王,15.4kstars足以证明它的人气。与glide不同的是,UIL提供了大量的配置方法,图片加载状态的回调,加载动画等,并提供了移动端图片加载框架的缓存思想,三级缓存策略等。GitHub地址:UILGitHubaddress5.PhotoView是一个ImageView展示框,支持缩放,响应手势。它在图像排行榜中排名第五。PhotoView与上面的区别在于图片显示功能,可以实现类似微信头像的放大功能。还有很多App的图片展示了手势按压的反应是多么逼真,这里PhotoView可以轻松实现。GitHub地址:PhotoViewGitHub地址6.CircleImageView圆角ImageView,这个在我们的App中一定是太常见了,也许我们可以有无数种圆角图片的显示方式,但是CircleImageView绝对是我们开发时的首选,如果你不知道CircleImageView然而,那么你需要快速体验它在处理圆角图像方面的强大功能。相信你一定会觉得现在认识CircleImageView已经来不及了。需要注意的是,这不是一个图片加载库,暂时属于它。类去这里。GitHub地址:CircleImageViewGitHub地址我们将介绍这6个图片加载库,大家可以根据自己的具体情况选择使用。3.用户界面1。material-dialogs是一个自定义视图框架。如果你还是自定义View的新手,对Dialog还有些陌生,可以通过material-dialogs来提高自己使用Dilaog的能力。GitHub地址:material-dialogsGitHub地址2.flexbox-layout是一种弹性可扩展的布局。FlexboxLayout作为LinearLayout和RelativeLayout的替代品,在项目开发中值得尝试使用。毕竟是谷歌出品的。GitHub地址:flexbox-layoutGitHub地址3.AndroidSwipeLayout有一个非常强大的滑动布局。滑动删除是我们应用程序中的常见要求。我们在实际开发中经常会遇到产品详情上下滑动的需求。AndroidSwipeLayout在GitHub上有8300个star,还是值得用的。GitHub地址:AndroidSwipeLayoutGitHub地址4.BaseRecyclerViewAdapterHelper是一个强大的通用RecyclerView适配器,在GitHub安卓适配器排行榜中名列前茅。GitHub地址:BaseRecyclerViewAdapterHelperGitHub地址5.MaterialDrawer强大的材质风格抽屉框架,非常灵活易用。GitHub地址:MaterialDrawerGitHub地址6.Android-ObservableScrollView是一个滑动框架,让View滑动更加直观。GitHub上提供了12种滑动效果,可以用来提升App的滑动体验。GitHub地址:Android-ObservableScrollViewGitHub地址7.AppIntro是一个提供快速创建欢迎页面的框架。在国内APP开发中,用ViewPager开发App欢迎页已经是标配,但是AppIntro绝对值得一看。GitHub地址:AppIntroGitHub地址8.ViewPagerIndicator一个基于ViewPager的开源页面指示器框架。作者是Android高手JakeWharton,但是已经很久没有更新了。你可以参考一下。GitHub地址:ViewPagerIndicatorGitHub地址,UI相关库的介绍就这些了,发现有用的会补充进来方便参考。四、动画1、lottie-android动画框架排在第一位,是一款可以在Android端快速展示AdobeAfeterEffect(AE)工具制作的动画的框架,是快速实现动画效果的最佳方式json文件***方便,而且这个json文件也是Adobe提供的AE工具做的,在AE里安装一个Bodymovin插件,用这个插件最后把动画效果生成成json文件,这个json文件可以被LottieAnimationView解析并生成华丽的动画效果,并且还支持跨平台。GitHub地址:lottie-androidGitHub地址2.Material-Animations是一个提供场景切换和过渡能力的动画框架。不同于lottie-android,Material-Animations提供了场景切换的动画效果。GitHub地址:Material-AnimationsGitHub地址3.AndroidViewAnimations是一个提供可爱动画集的动画框架。它仅次于lottie-android和Material-Animations这两个动画框架霸主,排名第三。看得出来,也是很厉害的。GitHub地址:AndoridViewAnimationsGitHub地址4.recyclerview-animators为recyclerview提供了一个扩展动画的框架,recyclerview已经推出很久了,如果你还在用ListView,说明你老了。GitHub地址:recyclerview-animatorsGitHub地址五、JSON解析框架1、fastjson是一个基于json解析生成的框架。由阿里出品,保证了代码质量。常用于网络请求,值得一试。GitHub地址:fastjsonGitHub地址2.GSON是一个提供Java对象序列化/反序列化为JSON格式的库。GitHub地址:gsonGitHub地址六、内存泄漏检测1、leakcanary是一个服务于Java和Andorid客户端的内存检测框架。使用它,15.9kstars足以显示它的强大。最重要的是,这也是方队的作品。至于这一点,相信大家都明白。GitHub地址:leakcanaryGitHub地址七、页面路由1、ARouter是一个提供服务和页面跳转的路由框架。它是由阿里生产的。框架提供:外部URL到内部页面的映射和跨模块页面跳转(模块化)绝对是企业级的开发框架。GitHub地址:ARouterGitHub地址八、数据库框架1、realm-javaRealm是专门为移动端打造的数据库框架,速度比普通数据库快,跑赢greenDAO。GitHub地址:RealmGitHub地址2.greenDAOgreenDAO是一个高效快速的SQLite数据库,star数与Realm相当。它由greenrobot团队开发和维护。这个团队还有一个很棒的框架,叫做EventBus。GitHub地址:greenDAOGitHub地址九、异步1.RxJavaRxJava是ReactiveExtensions的JavaVM实现:一个使用可观察序列结合异步和基于事件的程序的库,它扩展了观察者模式以支持数据/事件序列,并增加了允许您可以声明组成序列的运算符,同时抽象掉对低级线程、同步、线程安全和并发数据结构的关注。GitHub地址:RxJavaGitHub地址2.RxAndroid,Android客户端组件之间的异步通信框架,在通信框架排行榜中排名第二,仅次于EventBus。两者的区别在于,EventBus是用来代替组件间繁琐的通讯Interface,而RxAndroid是用来代替AnsyTask,两者并不冲突。GitHub地址:RxAndroidGitHub地址3.ageraAgera是一组类和接口,可以帮助组编写Android功能,异步和无效应用程序,需要AndroidSDK版本9或更高版本,由谷歌官方出品。GitHub地址:AgeraGitHub地址4.RxBinding是一个提供UI组件事件响应能力的框架。通过RxBinding,你可以体会到响应式编程的乐趣,让项目的事件流更清晰。GitHub地址:RxBindingGitHub地址10.事件消息1.EventBus事件间通信框架stars***,用于大型项目的Activity、Fragments、Threads、Services,虽然EventBus在传递事件时存在一些问题受未创建组件的限制,它只适合于活组件之间传递消息,但依然不妨碍其在各种大型项目场景中的使用。GitHub地址:EventBusGitHub地址11.图表1.MPAndroidChartMPAndroidChart是一个图表框架,以快速、简洁、强大着称,支持折线图、饼图、气泡图和烛台图,支持缩放、拖动和动画。GitHub地址:MPAndroidChartGitHub地址十二、生成模板代码1、Butterknife使用注解生成模板代码,将视图与方法、参数绑定,配合AndroidStudio提供的ButterKnife插件,帮助开发者省去频繁findViewById的麻烦。最新的ButterKnife还提供了onclick绑定和字符串初始化。初学者可以参考ButterKnife和ButterKnife进一步学习。作者是著名广场的团队成员之一杰克沃顿。GitHub地址:butterknifeGitHub地址13.其他1.DeviceYearClassDeviceYearClass会告知当前设备的内存、CPU核心和时钟频率在哪一年的产品线中是高配置的。它允许开发人员根据手机的硬件功能使应用程序表现不同。GitHub地址:DeviceYearClassGitHub地址2.NetworkConnectionClassNetworkConnectionClass可以查询当前用户的网络连接质量。会根据网络质量的不同分为若干个“ConnectionClasses”(连接分类),方便开发。该库侦听应用程序的现有网络流量,并在通信速度发生变化时通知用户。开发者可以通过网络连接调整应用程序的行为(例如使用较低质量的音频和视频、停止使用输入提示等)。GitHub地址:NetworkConnectionGitHub地址3.AndroidDebugDatabaseAndroidDebugDatabase是一个功能强大的Android数据库调试和共享偏好库。它是一个易于使用的工具,用于在浏览器中浏览数据库和共享条目。GitHub地址:DebugDatabaseGitHub地址4.LeakCanaryLeakCanary是Android和Java上检测内存泄漏的库。GitHub地址:LeakcanaryGitHub地址5.Dagger是Android和java的快速依赖注入库。简化共享实例的读写,简化复杂的依赖设置,让单元测试和集成测试变得更简单。GitHub地址:DaggerGitHub地址6.Realm存储简单,查询速度快,节省大量开发时间。RealmMobileDatabase是SQLite的替代品,SQLite是一种ORM解决方案框架。GitHub地址:RealmGitHub地址7.Timber在Android原有的Log类之上,提供了一个Logger,带有一个小型的、可扩展的API。GitHub地址:TimberGitHub地址8.Hugo通过注解触发器自动记录你调试构建的方法调用日志。作为程序员,经常需要在程序中添加日志功能来打印函数调用,以及参数和返回值,并花时间去执行。这不是问题,我们都这样做。只是可以让它变得更容易吗?只需将@DebugLog添加到函数头中,您就可以获得我们刚刚谈到的所有信息。GitHub地址:HugoGitHub地址9.AndroidGPUImage在Android上提供了一个高效的基于OpenGL的滤镜库。GitHub地址:GPUImageGitHub地址10.ExoPlayerExoPlayer是一个应用级的Android媒体播放器。它提供的API支持在本地或通过网络播放音频。ExoPlayer支持目前Android媒体播放器API不支持的功能,如DASH和SmoothStreaming自适应播放(根据带宽实时自动调整播放分辨率)。GitHub地址:ExoPlayerGitHub地址
