Android 优秀开源项目整理

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

多媒体编程

图片加载库

Picasso

  • 项目地址:https://github.com/square/picasso
  • 项目概要:Github大神推荐的强大的图片下载和缓存库。
  • 项目详情:Square 开源的项目,主导者是 JakeWharton.

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

  • 项目地址:https://github.com/nostra13/Android-Universal-Image-Loader
  • 项目概要:早期广泛使用的开源图片加载库。
  • 项目详情:强大又灵活的Android库, 用于加载,缓存,显示图片。

Volley

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

Cube-sdk

  • 项目地址:https://github.com/etao-open-source/cube-sdk
  • 项目概要:轻量级的Android开发框架。
  • 项目详情:高效方便地加载网络图片, 更简易地处理网络API请求。

图片处理库

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

  • 项目地址:https://github.com/MikeOrtiz/TouchImageView
  • 项目概要:一个ImageView的拓展类。
  • 项目详情:支持ImageView所有功能, 添加了平移, 缩放, 拖拽, 滑动, 双击缩放等动画。

ImageViewZoom

  • 项目地址:https://github.com/sephiroth74/ImageViewZoom
  • 项目概要:自定义ImageView控件。
  • 项目详情:一个可以缩放, 平移的自定义ImageView控件。

视频处理

ijkplayer

  • 项目地址:https://github.com/bilibili/ijkplayer
  • 基于 FFmpeg n3.4 的 Android / iOS 视频播放器,支持 MediaCodec,VideoToolbox。

PlayerBase

  • 项目地址:https://github.com/jiajunhui/PlayerBase
  • PlayerBase 是一种将解码器和播放视图组件化处理的解决方案框架。您需要什么解码器实现抽象引入即可,对于视图,无论是播放器内的控制视图还是业务视图,均可以做到组件化处理。将播放器的开发变得清晰简单,更利于产品的迭代。

ExoPlayer

  • 项目地址:https://github.com/google/ExoPlayer
  • 项目介绍:ExoPlayer 是一个构建于 Android 低版本 API 之上的开源应用项目 。相对于安卓内置的 MediaPlayer , ExoPlayer 有以下优点 :
  • 支持 DASH (动态自适应流媒体) 和 SmoothStreaming 格式 , 具体支持的格式可查看 Supported formats 。
  • 支持 HLS 高级特性 ,比如处理 #EXT-X-DISCONTINUIT 标签 。
  • 无缝地合并、连接和循环媒体 。
  • 更新播放器版本 ,ExoPlayer 作为依赖库用于构建应用,你可以轻易地升级版本 。
  • 良好的设备兼容,在不同的版本设备上很少产生问题 。
  • 支持 4.4 及以上使用常见加密方式 。
  • 支持开发者自定义扩展播放器来适应自己的项目 ,为此 ExoPlayer 预留了很多可替代的组件 。
  • 支持使用官方扩展组件来整合其他开源库 , 比如 IMA extension 使得开发者更简便地接入 Interactive Media Ads SDK 来实现盈利 。

AndroidVideoCache

  • 项目地址:https://github.com/danikula/AndroidVideoCache
  • 项目介绍:支持边播放视频边缓存视频,让视频播放更流畅。

GSYVideoPlayer

  • 项目地址:https://github.com/CarGuo/GSYVideoPlayer
  • 项目介绍:视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。

网络编程

网络加载框架

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

  • 项目地址:https://github.com/LitePalFramework/LitePal
  • 项目详情: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 应用程序中。

Android 界面相关

AdaptScreen

  • 项目地址:https://github.com/licheedev/AdaptScreen
  • 项目介绍:屏幕适配工具,增加了适配较长 / 较短边功能。

Android-PickerView

  • 项目地址:https://github.com/Bigkoo/Android-PickerView
  • 项目介绍:这是一款仿 iOS 的 PickerView 控件,有时间选择器和选项选择器,支持年月日时分,年月日,年月,时分等格式,支持一,二,三级选项选择,并且可以设置是否联动。

aurora-imui

  • 项目地址:https://github.com/jpush/aurora-imui
  • 项目介绍:Aurora IMUI 是个通用的即时通讯(IM)UI 库,不特定于任何 IM SDK。本 UI 库提供了消息列表、输入视图等常用组件,支持常见的消息类型:文字、图片、语音、视频等。默认包含多套界面风格,也能根据自己的需要自定义。同步支持 Android、iOS 和 React Native。

TakePhoto

  • 项目地址:https://github.com/crazycodeboy/TakePhoto
  • 项目介绍:一款用于在 Android 设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库。

BubbleSeekBar

  • 项目地址:https://github.com/woxingxiao/BubbleSeekBar
  • 项目介绍:自定义SeekBar,进度变化由可视化气泡样式呈现,定制化程度较高,适合大部分需求。

Material-Animations

  • 项目地址:https://github.com/lgvalle/Material-Animations
  • 项目介绍:Android 过渡动画的演示案例。

material-dialogs

  • 项目地址:https://github.com/afollestad/material-dialogs
  • 项目介绍:一个漂亮的、流畅的、可扩展的对话框 API,适用于 Kotlin 和 Android。

结构及优化

ARouter

  • 项目地址:https://github.com/alibaba/ARouter
  • 项目介绍:一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦。

XDroidMvp

  • 项目地址:https://github.com/limedroid/XDroidMvp
  • 项目介绍:轻量级的 Android MVP 快速开发框架。

leakcanary

  • 项目地址:https://github.com/square/leakcanary
  • 项目介绍:LeakCanary 是一个用于 Android 的内存泄漏检测库。

串口通信

Android-SerialPort-Tool

  • 项目地址:https://github.com/licheedev/Android-SerialPort-Tool
  • 项目介绍:根据 Android 官方提供的串口 API 写的一个小工具, 没啥功能,基本也就用来调调控制板哪串口能用, 发送一下简单的命令, 如果没懒癌发作的话,以后可能会加点最近命令保存啥的功能。

Android-SerialPort-API

  • 项目地址:https://github.com/licheedev/Android-SerialPort-API
  • 项目概要:Fork 自 Google 开源的 Android 串口通信 Demo,修改成 Android Studio 项目 https://code.google.com/archive/p/android-serialport-api/
  • 项目详情:支持常用的串口通信,包括修改 su 路径,可选配置数据位、校验位、停止位。

Modbus4Android

  • 项目地址:https://github.com/licheedev/Modbus4Android
  • 项目介绍:基于 modbus4j 的 Modbus 的 Android 实现,添加对 Android 串口(RTU)的支持,支持 RxJava 操作。

其他

ADB 命令大全

  • 项目地址:https://github.com/mzlogin/awesome-adb
  • 项目介绍:ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。

BaseRecyclerViewAdapterHelper

一个强大并且灵活的 RecyclerViewAdapter,它能做什么?

  • 优化 Adapter 代码(减少百分之 70% 代码)
  • 添加点击 item 点击、长按事件、以及 item 子控件的点击事件
  • 添加加载动画(一行代码轻松切换 5 种默认动画)
  • 添加头部、尾部、下拉刷新、上拉加载(感觉又回到 ListView 时代)
  • 设置自定义的加载更多布局
  • 添加分组(随心定义分组头部)
  • 自定义不同的 item 类型(简单配置、无需重写额外方法)
  • 设置空布局(比 Listview 的 setEmptyView 还要好用!)
  • 添加拖拽 item

项目地址:https://github.com/CymChad/BaseRecyclerViewAdapterHelper

AndroidUtilCode

AndroidUtilCode 是一个功能强大且易于使用的 Android 库。 该库封装了 Android 开发中常用的具有完整演示和单元测试的功能。 通过使用其封装的 API,可以大大提高开发效率。 该程序主要由两个模块组成,这两个模块分别是在开发中常用的 utilcode 和在开发中很少使用的 subutil,但是 utils 可以简化主模块。

项目地址:https://github.com/Blankj/AndroidUtilCode

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

FileDownloader

Android 文件下载引擎,稳定、高效、灵活、简单易用。项目地址: https://github.com/lingochamp/FileDownloader

android-zxingLibrary

几行代码快速集成二维码扫描功能。项目地址:https://github.com/yipianfengye/android-zxingLibrary

PermissionsDispatcher

处理运行时权限的简单基于注释的API。项目地址:https://github.com/permissions-dispatcher/PermissionsDispatcher

android-open-project

Android 开源项目分类汇总,项目地址:https://github.com/Trinea/android-open-project