http://codekk.com/open-source-project-analysis

Volley 源码解析

Volley 是 Google 在 2013 I/O 大会上推出的 Android 异步网络请求框架和图片加载框架。特别适合数据量小,通信频繁的网络操作。Volley 主要是通过两种 Diapatch Thread 不断从 RequestQueue 中取出请求,根据是否已缓存调用 Cache 或 Network 这两类数据获取接口之一,从内存缓存或是服务器取得请求的数据,然后交由 ResponseDelivery 去做结果分发及回调处理。


Android Universal Image Loader 源码分析

Universal Image Loader 是一个强大的、可高度定制的图片缓存。整个库分为 ImageLoaderEngine,Cache及ImageDownloader,ImageDecoder,BitmapDisplayer,BitmapProcessor 五大模块,其中 Cache 分为 MemoryCache 和 DiskCache 两部分。简单的讲就是 ImageLoader 收到加载及显示图片的任务,并将它交给 ImageLoaderEngine,ImageLoaderEngine 分发任务到具体线程池去执行,任务通过 Cache 及 ImageDownloader 获取图片,中间可能经过 BitmapProcessor 和 ImageDecoder 处理,最终转换为 Bitmap 交给 BitmapDisplayer 在 ImageAware 中显示。


Dagger 源码解析

Dagger 是一款 Java 平台的依赖注入库。Java 的依赖注入库中,最有名的应该属 Google 的 Guice,Spring 也很有名,不过是专注于 J2EE 开发。Guice 的功能非常强大,但它是通过在运行时读取注解来实现依赖注入的,依赖的生成和注入需要依靠 Java 的反射机制,这对于对性能非常敏感的 Android 来说是一个硬伤。基于此,Dagger 应运而生。Dagger 同样使用注解来实现依赖注入,但它利用 APT(Annotation Process Tool) 在编译时生成辅助类,这些类继承特定父类或实现特定接口,程序在运行时 Dagger 加载这些辅助类,调用相应接口完成依赖生成和注入。Dagger 对于程序的性能影响非常小,因此更加适用于 Android 应用的开发。


EventBus 源码解析

EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递,这里的事件可以理解为消息,本文中统一称为事件。事件传递既可用于 Android 四大组件间通讯,也可以用户异步线程和主线程间通讯等等。传统的事件传递方式包括:Handler、BroadCastReceiver、Interface 回调,相比之下 EventBus 的优点是代码简洁,使用简单,并将事件发布和订阅充分解耦。


xUtils 源码解析

xUtils一个 Android 公共库,主要包括 View,DB, Http, Bitmap 四个模块。View 模块主要的功能是通过注解绑定 UI,资源,事件。DB 模块是一个数据库 ORM 框架, 简单的语句就能进行数据的操作。Http 模块主要访问网络,支持同步,异步方式的请求,支持文件的下载。Bitmap 模块是加载图片以及图片的处理, 支持加载本地,网络图片,而且支持图片的内存和本地缓存。


ViewPagerindicator 源码解析

ViewPagerIndicator 常用语 ViewPager 的界面导航。主要特点:使用简单、样式全、易扩展。该项目总体设计非常简单,一个 PageIndicator 接口类,具体样式的导航类实现该接口,然后根据具体样式去实现相应的逻辑。 IcsLinearLayout:LinearLayout 的扩展,支持了 4.0 以上的 divider 特性。 CirclePageIndicator、LinePageIndicator、UnderlinePageIndicator、TitlePagerIndicator 继承自 View。TabPageIndicator、IconPageIndicator 继承自 HorizontalScrollView。


HoloGraphLibrary 源码解析

HoloGraphLibrary 是一个可用于绘制图表的项目,支持绘制线状图、柱状图、饼状图。图形设计友好,使用方便。不过库本身代码一般,建议吸收原理重构而不要直接用。


CircularFloatingActionMenu 源码解析

CircularFloatingActionMenu 是一个与著名应用 Path 菜单类似的(非完整)圆形弹出菜单。可方便的定制菜单以及动画。支持自定义动画、菜单、角度范围、半径等。源码主要分成两部分,一部分是构成菜单的 View 部分,另一部分是动画的操作类。


PhotoView 源码解析

PhotoView 是支持双击或双指缩放的 ImageView。支持 Pinch 手势自由缩放,支持双击放大/还原,支持平滑滚动,在滑动父控件下能够运行良好,支持基于 Matrix 变化(放大/缩小/移动)的事件监听。PhotoView 这个库实际上比较简单,关键点其实就是 Touch 事件处理和 Matrix 图形变换的应用。


Android Lock Pattern 源码解析

Lock Pattern 是 Android 的图案密码解锁库,通过手势连接 3 * 3 的点矩阵绘制图案表示解锁密码。支持 ACTION_CREATE_PATTERN、ACTION_COMPARE_PATTERN、ACTION_VERIFY_CAPTCHA 三种 Action 操作模式。


公共技术点之Java 动态代理

在某些情况下,我们不希望或是不能直接访问对象 A,而是通过访问一个中介对象 B,由 B 去访问 A 达成目的,这种方式我们就称为代理。这里对象 A 所属类我们称为委托类,也称为被代理类,对象 B 所属类称为代理类。根据程序运行前代理类是否已经存在,可以将代理分为静态代理和动态代理。


公共技术点之Java 注解 Annotation

注解指能够添加到 Java 源代码的语法元数据。类、方法、变量、参数、包都可以被注解,可用来将信息元数据与程序元素进行关联。Annotation 中文常译为“注解”,注解的主要作用包括 a. 标记,用于告诉编译器一些信息。b. 编译时动态处理,如动态生成代码。c. 运行时动态处理,如得到注解信息。


公共技术点之View 绘制流程

当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 Android framework 处理.绘制是从根节点开始,对布局树进行 measure 和 draw 。整个 View 树的绘图流程在 ViewRoot.java类的performTraversals() 函数展开,该函数所做的工作可简单概况为是否需要重新计算视图大小(measure)、是否需要重新安置视图的位置(layout)、以及是否需要重绘(draw)。


公共技术点之依赖注入

如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。非自己主动初始化依赖,而通过外部来传入依赖的方式,我们就称为依赖注入。简单的说依赖注入主要有两个好处:(1). 解耦,将依赖之间解耦。(2). 因为已经解耦,所以方便做单元测试,尤其是 Mock 测试。


公共技术点之View 事件传递

所有 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。

CodeKK源码地址相关推荐

  1. huggingface源码地址 各种NLP处理的BERT模型源码

    huggingface源码地址 https://github.com/huggingface/transformers

  2. 源码地址php实战第十二天

    最近研究源码地址,稍微总结一下,以后继续补充: 源码下载地址 : http://pan.baidu.com/share/link?shareid=426911&uk=4180563440 大概 ...

  3. ASP.NET Core 框架源码地址

    ASP.NET Core 框架源码地址 https://github.com/dotnet/corefx 这个是.net core的 开源项目地址 https://github.com/aspnet  ...

  4. [译] 论 Rust 和 WebAssembly 对源码地址索引的极限优化

    原文地址:Oxidizing Source Maps with Rust and WebAssembly 原文作者:Nick Fitzgerald 译文出自:掘金翻译计划 本文永久链接:github. ...

  5. IDEA 快速搭建SpringBoot项目 提供GitHub源码地址

    一.环境: IDEA+SpringBoot+MySql+MyBatis+Thymeleaf GitHub源码地址: https://github.com/516516/springboottestde ...

  6. 超简单的pyTorch训练-onnx模型-C++ OpenCV DNN推理(附源码地址)

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为1974字,预计阅读5分钟 前言 很早就想学习深度学习了,因为平时都是自学,业余时间也有限,看过几个pyTorch的入门,都是一 ...

  7. pyTorch入门(六)——实战Android Minist OpenCV手写数字识别(附源码地址)

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为4239字,预计阅读12分钟 前言 前面几篇文章实现了pyTorch训练模型,然后在Windows平台用C++ OpenCV D ...

  8. “数字炸弹“——练习Python基础知识的小游戏【文末源码地址】

    文章目录 数字"炸弹" 基本代码 核心代码 源码地址 数字"炸弹" 数字炸弹小游戏,平时可以多个人一块玩.游戏规则也很简单:从0~100之间选一个数字,作为&q ...

  9. Python数据分析实战【十二】:机器学习决策树算法案例实战【文末源码地址】

    文章目录 构造数据 决策树解决 报错解决 源码地址 构造数据 我们用pandas生成20条数据,其中标签为bad的数据有6条,标签为good的数据有14条,代码如下: import pandas as ...

最新文章

  1. GODADDY主机用tar命令通过SSH远程打包20M以上的文件
  2. 如何为javascript代码编写注释以支持智能感知
  3. python 一些函数语法中参数用中括号([])和逗号(,)嵌套表示是何种含义?可选参数
  4. Kali学习笔记31:目录遍历漏洞、文件包含漏洞
  5. ruby中的回调方法和钩子方法
  6. float型数据与字节数组的转化
  7. vue组件中嵌套html,vue2.0怎么用组件自定义标签实现组件的嵌套?
  8. C语言求一个数的倒数的平方根近似值
  9. 【C】C语言内存字节对齐
  10. ip地址服务器怎么修改,怎么修改电脑的IP地址和DNS服务器
  11. 芯片测试的目的及原理介绍
  12. [英语歌曲]老鹰之歌:If I Could (El Condor Pasa)
  13. python塔防之------“红精灵来袭”
  14. Javascript技巧(230个)[转载]
  15. 管壳式程序c语言,换热器模型原程序(C语言).doc
  16. Flash Professional / 处理 Flash 文档 XFL(XML格式描述的CS5 FLA)
  17. 卷积,反卷积,空洞卷积
  18. Linux平台彻底卸载MySQL总结
  19. python全栈s3视频教程笔记 Day1
  20. QQ空间打不开,IE里无法运行脚本的解决方案 转自:spookfox.cublog.cn

热门文章

  1. 相遇周期 HDU - 1713
  2. 必理痛剂量_口袋里有剂量计的飞行
  3. 无线路由器当无线交换机用
  4. Python识别身份证信息,并保存在excel当中
  5. 纯原创最全Redis面试题整理
  6. 安卓禁用硬件加速_Android硬件加速详解
  7. ICN(Information-Centric Networking)初步介绍
  8. 你一定没见过这么有意思的电路板
  9. 2D游戏中遮挡实现--记录
  10. 你了解ABBYY FineReader 14么?