一个强大的 Andriod 下拉刷新框架。主要特色:(1) 继承于 ViewGroup,Content 不只能够是经常使用的 ListView、GridView,还能够是其余任何 View。(2) 简洁完善的 Header 抽象,方便进行拓展,构建符合需求的头部。UltraPTR 整体设计比较简单清晰,首先抽象出了两个接口,功能接口和 UI 接口。PtrHandler 表明下拉刷新的功能接口,包含刷新功能回调方法以及判断是否能够下拉的方法。用户实现此接口来进行数据刷新工做。android
DynamicLoadApk 是一个开源的 Android 插件化框架。插件化的优势包括:(1) 模块解耦,(2) 动态升级,(3) 高效并行开发(编译速度更快) (4) 按需加载,内存占用更低等等。原理是 DexClassLoader 加 Activity 代理,即在容器中注册几个代理的 Activity,启动插件的 Activity 时实际启动的都是代理的 Activity,从而解决 Activity 必须注册的问题。数据库
NineOldAndroids 是一款支持在低版本(API 11 如下)使用 Android 属性动画以及 3D 旋转动画的框架,它提供了一系列如 ViewAnimator, ObjectAnimator, ViewPropertyAnimator 等 API 来完成这些动画,解决了 Android 动画框架在低版本的兼容性问题。在 API 11 (Honeycomb-Android 3.0)后 Android 推出了属性动画、X 轴翻转等动画效果,可是这些效果却不能运行在 API 11 如下,NineOldAndroids 的出现使得这些动画效果可以兼容低版本系统,保证动画在各个系统版本可以完美运行。缓存
SlidingMenu 是一个强大的侧边栏菜单,经过拖动屏幕边缘滑出菜单,支持屏幕左右划出,支持菜单 Zoom、Scale、Slide Up 三种动画样式出现。主要特色以下:(1) 侧边栏能够是一个 Fragment,包含任何 View;(2) 使用简单方便,支持左滑和右滑等;(3) 自定义侧边栏显示动画。服务器
Cling 类库是由 Java 实现的 DLNA/UPnP 协议栈。基于 DLNA/UPnP 能够开发出相似多屏互动、资源共享、远程控制等功能的应用,经过 Android 应用管理一个或多个设备,将音频、视频、图片推送到指定设备显示。UPnP 的工做过程大概分为 6 个步骤:寻址(Addressing)、发现(Discovery)、描述(Description)、控制(Control)、事件 (Eventing)、展示(Presentation)。网络
base-adapter-helper 是对传统的 BaseAdapter ViewHolder 模式的一个封装。主要功能就是简化咱们书写 AbsListView 的 Adapter 的代码,如 ListView,GridView。优势 (1) 提供 QucikAdapter,省去相似 getCount() 等抽象函数的书写,只需关注 Model 到 View 的显示。(2) BaseAdapterHelper 中封装了大量用于为 View 操做的辅助方法。框架
Yalantis 开源动画体验很棒的 Side Menu,菜单打开为翻页效果。异步
DiscreteSeekBar 实现了相似 Material Design 风格的 SeekBar。DiscreteSeekBar 能够在 2.1 以上的应用中使用,能够在 XML 中配置显示的格式,也能够在代码中自定义显示的数字或者指定显示字符。使用方法相似 SeekBar,很简单。ide
CalendarListview 是一个能够方便从日历中选择日期的控件,支持到 API 10 以上,只须要在你的布局中添加 DayPickerView 便可。使用控件 RecycleView 实现的日期选择器,能够选择时间段。函数
PagerSlidingTabStrip 是配合 ViewPager 使用的 Indicator,支持 ViewPager Scroll 时 Indicator 联动。PagerSlidingTabStrip 实现联动效果的原理是调用 ViewPager 的 OnPageChangeListener。 可是 Viewpager 注册的 Listener 不是自身的 OnPageChangeListener,而是 PagerSlidingTabStrip 内部类 PageListener。 经过 PageListener 实现对 ViewPager 和 Tab 的封装。从而实现滑动联动效果。
简单的介绍了 View 和 Property 动画的概念,如何在项目中建立资源文件,以及如何在代码中使用它们。
介绍了Java 反射,如何经过反射获取类、属性、方法、父类、接口、注解等等。
Volley 是 Google 在 2013 I/O 大会上推出的 Android 异步网络请求框架和图片加载框架。特别适合数据量小,通讯频繁的网络操做。Volley 主要是经过两种 Diapatch Thread 不断从 RequestQueue 中取出请求,根据是否已缓存调用 Cache 或 Network 这两类数据获取接口之一,从内存缓存或是服务器取得请求的数据,而后交由 ResponseDelivery 去作结果分发及回调处理。
Universal Image Loader 是一个强大的、可高度定制的图片缓存。整个库分为 ImageLoaderEngine,Cache及 ImageDownloader,ImageDecoder,BitmapDisplayer,BitmapProcessor 五大模块,其中 Cache 分为 MemoryCache 和 DiskCache 两部分。简单的讲就是 ImageLoader 收到加载及显示图片的任务,并将它交给 ImageLoaderEngine,ImageLoaderEngine 分发任务到具体线程池去执行,任务经过 Cache 及 ImageDownloader 获取图片,中间可能通过 BitmapProcessor 和 ImageDecoder 处理,最终转换为 Bitmap 交给 BitmapDisplayer 在 ImageAware 中显示。
Dagger 是一款 Java 平台的依赖注入库。Java 的依赖注入库中,最有名的应该属 Google 的 Guice,Spring 也颇有名,不过是专一于 J2EE 开发。Guice 的功能很是强大,但它是经过在运行时读取注解来实现依赖注入的,依赖的生成和注入须要依靠 Java 的反射机制,这对于对性能很是敏感的 Android 来讲是一个硬伤。基于此,Dagger 应运而生。Dagger 一样使用注解来实现依赖注入,但它利用 APT(Annotation Process Tool) 在编译时生成辅助类,这些类继承特定父类或实现特定接口,程序在运行时 Dagger 加载这些辅助类,调用相应接口完成依赖生成和注入。Dagger 对于程序的性能影响很是小,所以更加适用于 Android 应用的开发。
EventBus 是一个 Android 事件发布/订阅框架,经过解耦发布者和订阅者简化 Android 事件传递,这里的事件能够理解为消息,本文中统一称为事件。事件传递既可用于 Android 四大组件间通信,也能够用户异步线程和主线程间通信等等。传统的事件传递方式包括:Handler、BroadCastReceiver、 Interface 回调,相比之下 EventBus 的优势是代码简洁,使用简单,并将事件发布和订阅充分解耦。
xUtils一个 Android 公共库,主要包括 View,DB, Http, Bitmap 四个模块。View 模块主要的功能是经过注解绑定 UI,资源,事件。DB 模块是一个数据库 ORM 框架, 简单的语句就能进行数据的操做。Http 模块主要访问网络,支持同步,异步方式的请求,支持文件的下载。Bitmap 模块是加载图片以及图片的处理, 支持加载本地,网络图片,并且支持图片的内存和本地缓存。
ViewPagerIndicator 经常使用语 ViewPager 的界面导航。主要特色:使用简单、样式全、易扩展。该项目整体设计很是简单,一个 PageIndicator 接口类,具体样式的导航类实现该接口,而后根据具体样式去实现相应的逻辑。 IcsLinearLayout:LinearLayout 的扩展,支持了 4.0 以上的 divider 特性。 CirclePageIndicator、LinePageIndicator、UnderlinePageIndicator、 TitlePagerIndicator 继承自 View。TabPageIndicator、IconPageIndicator 继承自 HorizontalScrollView。
HoloGraphLibrary 是一个可用于绘制图表的项目,支持绘制线状图、柱状图、饼状图。图形设计友好,使用方便。不过库自己代码通常,建议吸取原理重构而不要直接使用。
CircularFloatingActionMenu 是一个与著名应用 Path 菜单相似的(非完整)圆形弹出菜单。可方便的定制菜单以及动画。支持自定义动画、菜单、角度范围、半径等。源码主要分红两部分,一部分是构成菜单的 View 部分,另外一部分是动画的操做类。
PhotoView 是支持双击或双指缩放的 ImageView。支持 Pinch 手势自由缩放,支持双击放大/还原,支持平滑滚动,在滑动父控件下可以运行良好,支持基于 Matrix 变化(放大/缩小/移动)的事件监听。PhotoView 这个库实际上比较简单,关键点其实就是 Touch 事件处理和 Matrix 图形变换的应用。
Lock Pattern 是 Android 的图案密码解锁库,经过手势链接 3 * 3 的点矩阵绘制图案表示解锁密码。支持 ACTION_CREATE_PATTERN、ACTION_COMPARE_PATTERN、ACTION_VERIFY_CAPTCHA 三种 Action 操做模式。
在某些状况下,咱们不但愿或是不能直接访问对象 A,而是经过访问一个中介对象 B,由 B 去访问 A 达成目的,这种方式咱们就称为代理。这里对象 A 所属类咱们称为委托类,也称为被代理类,对象 B 所属类称为代理类。根据程序运行前代理类是否已经存在,能够将代理分为静态代理和动态代理。
注解指可以添加到 Java 源代码的语法元数据。类、方法、变量、参数、包均可以被注解,可用来将信息元数据与程序元素进行关联。Annotation 中文常译为“注解”,注解的主要做用包括 a. 标记,用于告诉编译器一些信息。b. 编译时动态处理,如动态生成代码。c. 运行时动态处理,如获得注解信息。
当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw 。整个 View 树的绘图流程在 ViewRoot.java类的performTraversals() 函数展开,该函数所作的工做可简单概况为是否须要从新计算视图大小(measure)、是否须要从新安置视图的位置(layout)、以及是否须要重绘 (draw)。
若是在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。非本身主动初始化依赖,而经过外部来传入依赖的方式,咱们就称为依赖注入。简单的说依赖注入主要有两个好处:(1). 解耦,将依赖之间解耦。(2). 由于已经解耦,因此方便作单元测试,尤为是 Mock 测试。
全部 Touch 事件都被封装成了 MotionEvent 对象,包括 Touch 的位置、时间、历史记录以及第几个手指(多指触摸)等。事件类型分为 ACTION_DOWN, ACTION_UP, ACTION_MOVE, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_CANCEL,每一个事件都是以 ACTION_DOWN 开始,ACTION_UP 结束。对事件的处理包括三类,分别为传递——dispatchTouchEvent() 函数、拦截——onInterceptTouchEvent() 函数、消费——onTouchEvent() 函数和 OnTouchListener。