android最佳实践10:开源库汇总

第一部分:工具库

依赖注入库

dagger:Square公司的明星项目,已被google官方采用

AndroidAnnotations(Code Diet)

  • 目前我正在使用的项目,不是很方便,每次要编译时生成Activity的子类_Activity
  • 特点:(1) 依赖注入:包括 view,extras,系统服务,资源等等
    (2) 简单的线程模型,通过 annotation 表示方法运行在 ui 线程还是后台线程
    (3) 事件绑定:通过 annotation 表示 view 的响应事件,不用在写内部类
    (4) REST 客户端:定义客户端接口,自动生成 REST 请求的实现
    (5) 没有你想象的复杂:AndroidAnnotations 只是在在编译时生成相应子类
    (6) 不影响应用性能:仅 50kb,在编译时完成,不会对运行时有性能影响。
    其他:与 roboguice 的比较:roboguice 通过运行时读取 annotations 进行反射,所以可能影响应用性能,而 AndroidAnnotations 在编译时生成子类,所以对性能没有影响

图片缓存库

  • picasso
  • fresco
  • Glide

对比

  • fresco facebook的明星项目,5.0以下特别流畅,但是包大。亮点是渐进式显示图片
  • picasso Square的明星项目,跟okhttp结合最好用,包最小
  • Glide是google出品的图片缓存框架

总结,我选择使用Picasso,因为简单易上手。

gradle-retrolambda:java7兼容lambda库

使用教程

rx-android:感受响应式编程魅力

使用教程

Retrofit2.0:最热门的restfull规范网络请求框架

使用教程

EventBus:发布 / 订阅的事件总线

使用教程

高版本向低版本兼容库

nineoldandroids:JakeWharton大神的项目

第二部分 ui库

刷新ui

BGARefreshLayout-Android:多种下拉刷新效果、上拉加载更多、可配置自定义头部广告位

  • 目前我正在使用的下拉刷新,上拉加载

Android-PullToRefresh

  • 目前使用最广泛的强大的拉动刷新开源项目,强烈推荐使用
  • 支持各种控件下拉刷新,ListView、ViewPager、WebView、ExpandableListView、GridView、ScrollView、Horizontal ScrollView、Fragment 上下左右拉动刷新
  • APP 示例:新浪微博各个页面

android-Ultra-Pull-To-Refresh

  • star数目4991的项目,跟上一个刷新控件媲美
  • 这个继承于 ViewGroup 可以包含任何 View。功能甚至比 SwipeRefreshLayout 强大。使用起来非常简单。良好的设计,如果你想定制自己的 UI 样式,非常简单,就像给 ListView 加一个 Header View 那么简单。支持 API LEVEL >= 8
  • android-Ultra-Pull-To-Refresh 源码解析

Material Design UI

material-dialogs

  • 各种material风格的dialog。 漂亮的的、易于使用的和可定制的Dialog API,你能够使用Material designed风格的Dialog到API 8
  • 目前正在使用,文档很全面。

仿ios的ui

Android-PickerView:仿ios的pickview库

仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果

ViewPager 、Gallery轮播图 旋转木马效果

Android-ConvenientBanner:banner轮播图

  • 目前我正在使用的控件,没有解决每次imageview重新加载的问题,导致大的图片会先出现空白。

LoopRotarySwitch:旋转木马

  • 目前正在使用,适用于3-4个图片,支持无线滚动。
    优点
  • 适用于Activity和Fragment
  • 可定制大小,可监听事件,可调整旋转滚动半径

CarouselViewProject:画廊效果

  • 不是很灵活,不支持无限滚动

3d旋转木马效果

以下三个3d旋转木马效果,都来自于这篇文章Android 3D Carousel,分别是不同的实现

缺点

  • 在Fragment中使用会出现问题。


优点

  • 增加了垂直滚动模式,尚未测试

CarrouselView:star22 中文版

优点

  • 中文版,效果最佳
  • 布局可以随意自定义,不受只是图片的限制。
  • 2、增加点击切换到中间位置。
  • 3、手势滑动切换。
  • 4、切换中间回调。
  • 5、自定义适配器更加方便用户设置自己需要的布局。

GlFancyCoverFlow:电影海报轮播图

  • 借鉴自FancyCoverFlow
  • 增加了无限滚动,更适合海报等效果
  • 但是继承自GalleryView,这个类已经被google放弃了,有内存溢出的风险

特殊ui

ExpandableLayout:控件收缩

  • 目前正在使用,可以自己修改源码。