Android 优秀开源项目整理

下面这些是我整理的一些常用的开源框架,在你的项目中使用它们可以起到事半功倍的效果,有的项目已经不再维护,有的项目即将停止,我只能感叹技术的发展是如此之快,在你还没有完全搞懂一个新框架之前可能这个框架已经被淘汰,我相信这些框架中的大部分会在不久被淘汰,也可能会被全部淘汰。但是这并不影响我们去学习和使用它们,因为其中的设计思维是可以长久的被我们所利用的。

多媒体编程

图片加载库

Picasso

Glide

  • 项目地址:https://github.com/bumptech/glide
  • 项目概要:Google推荐的图片加载和缓存的库。
  • 项目详情:专注于平滑滚动时的流畅加载, Google开源项目, 2014年Google I/O 上被推荐。

Fresco

  • 项目地址:https://github.com/facebook/fresco
  • 项目概要:Facebook推荐的的Android图片加载库。
  • 项目详情:自动管理图片的加载和图片的缓存.Facebook 在2015年上半年开源的图片加载库。

Android-Universal-Image-Loader

Volley

  • 项目地址:https://github.com/mcxiaoke/android-volley
  • 项目概要:2013年Google I/O推荐的网络通讯框架。
  • 项目详情:使用volley加载网络图片,主要用到其中的ImageLoader, NetworkImageView类, 注意它不仅仅是个图片加载库。

Cube-sdk

图片处理库

PinchImageView

  • 项目地址:https://github.com/boycy815/PinchImageView
  • 项目概要:国人写的, 可能是体验最好的图片手势控件。
  • 项目详情:支持双击放大,双击缩小,超出边界会回弹, 滑动惯性,不同分辨率无缝切换,可与ViewPager结合使用。

GestureViews

  • 项目地址:https://github.com/alexvasilkov/GestureViews
  • 项目概要:包含ImageView的自定义FrameLayout.
  • 项目详情:项目目的是让图片的查看尽可能流畅平滑, 让开发者更加方便地集成到自己的应用中, 支持手势控制和动画。

PhotoView

  • 项目地址:https://github.com/chrisbanes/PhotoView
  • 项目概要:致力于帮助开发者高效的创建可缩放的 ImageView.
  • 项目详情:重写 ImageView 的实现, 支持多点触摸的图片缩放。

subsampling-scale-image-view

  • 项目地址:https://github.com/davemorrissey/subsampling-scale-image-view
  • 项目概要:一个Android自定义图片视图, 专为图片画廊设计。
  • 项目详情:丰富的配置选项, 更方便的实现图片的手势缩放, 旋转, 平移. 无损展示大图, 完美的地嵌入画廊, 地图等.可显示大图(地图, 建筑设计图)等而不造成OutOfMemoryErrors(OOM内存溢出异常)。

TouchImageView

ImageViewZoom

网络编程

网络加载框架

Retrofit2.0

  • 项目地址:http://square.github.io/retrofit/
  • 项目概要:以接口/注解的形式定义请求和响应。
  • 项目详情:Square 开源的项目. 是一套 RESTful 架构的 Android(Java) 客户端实现,基于注解,提供 JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO to JSON,网络请求 (POST,GET,PUT,DELETE 等)封装。 Jake Wharton 大神力荐. 本身的网络核心可以替换. 如 Apache HTTP client, URL connection, OKHttp 等, 数据解析核心也可以替换如 Gson, Jackson, fastjson, xStream 等. 力求用最少的代码, 实现最强大的功能. 官方主页

okhttp

  • 项目地址:https://github.com/square/okhttp
  • 项目概要:一个为安卓和 java 应用诞生的 Http + SPDY 的网络处理库。
  • 项目详情:square开源项目. a. 支持 HTTP, HTTPS, HTTP/2.0, and SPDY 协议 b. 自动缓存数据, 节省流量, c.内部自动GZIP压缩内容。

android-async-http

  • 项目地址:https://github.com/loopj/android-async-http
  • 项目概要:一个异步的 AndroidHttp 库。
  • 项目详情:比较经典的网络请求库, 基于 Apache 的 HttpClient 库实现, 但是由于 AndroidM(6.0) 去除了对 HttpClient 相关 API, 意味着 google 不再推荐使用。

Volley

  • 项目地址:https://github.com/mcxiaoke/android-volley
  • 项目概要:一个能让 Android 的网络请求更简单快捷的 Http 库。
  • 项目详情:官方地址, 需翻墙 Volley 集成了 AsyncHttpClient 和 Universal-Image-Loader 的优点,既可以像 AsyncHttpClient 一样非常简单地进行 HTTP 通信,也可以像 Universal-Image-Loader 一样轻松加载网络上的图片。但是对大数据量的网络操作如文件的下载支持较差。

存储编程

数据库框架

OrmLite

  • 项目地址:http://ormlite.com/releases/
  • 项目概要:比较好的一个数据库开源框架。不过git上很久没有更新了,貌似人家好像不在git上做项目维护了,而是在 官网 上做维护更新。
  • 项目详情:优点: 1.轻量级;2.使用简单,易上手;3.封装完善;4.文档全面。缺点:1.基于反射,效率较低(本人还没有觉得效率低);2.缺少中文翻译文档。

LitePal

GreenDao3.2

  • 项目地址:https://github.com/greenrobot/greenDAO
  • 项目概要:1.存取速度快; 2.支持数据库加密; 3.轻量级; 4.激活实体; 5.支持缓存; 6.代码自动生成。
  • 项目详情:效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍,目前git上一直在做更新维护,start数量为9000多。

DBFlow

  • 项目地址:https://github.com/Raizlabs/DBFlow
  • 项目概要:1.存取速度快; 2.支持数据库加密; 3.轻量级; 4.激活实体; 5.支持缓存; 6.代码自动生成。
  • 项目详情:也是很不错的数据库框架,kotlin,rx好像都支持,比GreenDao3.2的使用好像跟方便一些(还没有具体使用)。目前git上一直在做更新维护。

Realm

  • 项目地址:https://github.com/realm/realm-java
  • 项目概要:易用,快速,跨平台,可视化。
  • 项目详情:数据库 Realm,是用来替代 sqlite 的一种解决方案,它有一套自己的数据库存储引擎,比 sqlite 更轻量级,拥有更快的速度,并且具有很多现代数据库的特性,比如支持 JSON,流式 api,数据变更通知,自动数据同步,简单身份验证,访问控制,事件处理,最重要的是跨平台,目前已有 Java,Objective C,Swift,React-Native,Xamarin 这五种实现。和 SQLite 不同,它允许你在持久层直接和数据对象工作。在它之上是一个函数式风格的查询 api,众多的努力让它比传统的 SQLite 操作更快。

ObjectBox

  • 项目地址:https://github.com/objectbox/objectbox-java
  • 项目概要:超快,对象api,对象关系,即时单元测试。
  • 项目详情:ObjectBox 是一个超快的面向对象数据库,具有强大的关系支持 [strong relation support]。 ObjectBox 是嵌入到您的 Android,Linux,macOS 或 Windows 应用程序中。

其他

QRGen

生成二维码,项目地址:https://github.com/kenglxn/QRGen

CommonSize

Android通用屏幕适配方案,项目地址:https://github.com/licheedev/CommonSize

EventBus

EventBus 是适用于 Android 和 Java 的发布/订阅事件总线。项目地址:https://github.com/greenrobot/EventBus

Bufferknife

用于 Android 视图的字段和方法绑定,它使用注释处理为您生成样板代码。项目地址:https://github.com/JakeWharton/butterknife

RootManager

RootManager是一个库,使开发人员可以访问Android设备上的根实用程序。 RootManager提供的功能包括检查设备是否已植根,尝试获取超级用户特权,静默安装/卸载应用程序,捕获屏幕快照,记录屏幕等。项目地址:https://github.com/Chrisplus/RootManager