今天看了一篇文章,说的是程序员的宿命就是不断地学习!
我是个喜欢不断学习新知识,探索新东西的人,无论是对于技术还是生活,我都有着足够的好奇心,我觉得只有这样,人生才会更快乐一些。然而,在学习的过程中,归纳和总结知识,整合资源的能力也是非常重要的。所以,今天正好有点时间,就整合一下Android学习路上进阶的内容。
在文章开始之前想先分享两篇不错的文章。
我的 Android 开发实战经验总结 ——简书上看到的一篇不错的文章
http://www.jianshu.com/p/4f152bc8f4f3
还有一篇是Android学习之路 stormzhang 张哥的文章。
Android开发如何进阶?
http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDcyMA==&mid=403072488&idx=1&sn=12a1deee3c00da644ad3844032a2374f&scene=0#wechat_redirect
接下来是我整理的 Android进阶学习内容:
书籍:
1.Android群英传
2.Android艺术开发与探索
3.Android设计模式
第三方框架 详细使用步骤加源码解析:1.会使用 2.懂原理 3.框架源码解析
网络框架:
1.Volley框架二次封装
2.
Volley框架源码解析
http://a.codekk.com/blogs/detail/54cfab086c4761e5001b2542
郭霖:
http://blog.csdn.net/guolin_blog/article/details/17482095
-
okhttp
square 开源的 http 工具类
项目地址:https://github.com/square/okhttp
文档介绍:http://square.github.io/okhttp/
特点:(1) 支持 SPDY( http://zh.wikipedia.org/wiki/SPDY )协议。SPDY 协议是 Google 开发的基于传输控制协议的应用层协议,通过压缩,多路复用(一个 TCP 链接传送网页和图片等资源)和优先级来缩短加载时间。
(2) 如果 SPDY 不可用,利用连接池减少请求延迟
(3) Gzip 压缩
(4) Response 缓存减少不必要的请求
-
Retrofit
RESTFUL API 设计
项目地址:https://github.com/square/retrofit
文档介绍:http://square.github.io/retrofit/
事件总线:
1. Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
http://blog.csdn.net/guolin_blog/article/details/9097463
2.公共技术点之 View 事件传递
http://a.codekk.com/detail/Android/Trinea/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8B%20View%20%E4%BA%8B%E4%BB%B6%E4%BC%A0%E9%80%92
3.EventBus 源码解析
http://a.codekk.com/detail/Android/Trinea/EventBus%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90
-
EventBus
greenrobot 的开源项目
项目地址:https://github.com/greenrobot/EventBus
原理剖析文档:EventBus
文档介绍:https://github.com/greenrobot/EventBus#general-usage-and-api
特点:(1) 支持在不同类型的线程中处理订阅,包括发布所在线程,UI 线程、单一后台线程、异步线程
(2) 支持事件优先级定义,支持优先级高的订阅者取消事件继续传递,支持粘性事件,是不是跟系统的有序广播、粘性广播很像啊
(3) 不是基于 annotations
(4) 性能更优
(5) 体积小
(6) 支持单例创建或创建多个对象
(7) 支持根据事件类型订阅
-
Otto
Square 的开源项目,基于 Guava 的 Android 优化
项目地址:https://github.com/square/otto
文档介绍:http://square.github.io/otto/
EventBus 与 Otto 的功能及性能对比文档
EventBus 与 Otto 性能对比 Demo Apk
图片缓存:
-
Android-Universal-Image-Loader
图片缓存,目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性。
项目地址:https://github.com/nostra13/Android-Universal-Image-Loader
原理剖析文档:Android-Universal-Image-Loader
Demo 地址:https://github.com/Trinea/TrineaDownload/blob/master/universal-imageloader-demo.apk?raw=true
文档介绍:http://www.intexsoft.com/blog/item/74-universal-image-loader-part-3.html
-
picasso
square 开源的图片缓存
项目地址:https://github.com/square/picasso
文档介绍:http://square.github.io/picasso/
特点:(1)可以自动检测 adapter 的重用并取消之前的下载
(2)图片变换
(3)可以加载本地资源
(4)可以设置占位资源
(5)支持 debug 模式
-
fresco
一款强大的图片缓存工具,由 Facebook 开发
项目地址:https://github.com/facebook/fresco
文档介绍:http://frescolib.org/
特点:(1) 两个内存缓存加上磁盘缓存构成了三级缓存
(2) 支持流式,可以类似网页上模糊渐进式显示图片
(3) 对多帧动画图片支持更好,如 Gif、WebP
(4) 更多样的显示,如圆角、进度条、点击重试、自定义对焦点
(5) 更多样的加载,如支持 EXIF、全面支持 WebP
(6) 支持 Android 2.3+
-
Glide
Glide 是一个 android 平台上的快速和高效的开源的多媒体资源管理库,提供 多媒体文件的压缩,内存和磁盘缓存, 资源池的接口。
它可以最大性能地在 Android 设备上读取、解码、显示图片和视频。Glide 可以将远程的图片、视频、动画图片等缓存在设备本地便于提高用户浏览图片的流畅体验。
项目地址:https://github.com/bumptech/glide
特点:
(1) GIF 动画的解码
(2) 本地视频剧照的解码
(3) 支持缩略图
(4) Activity 生命周期的集成
(5) 转码的支持
(6) 动画的支持
(7) OkHttp 和 Volley 的支持
Android 三大图片缓存原理、特性对比
http://b.codekk.com/detail/Trinea/Android%20%E4%B8%89%E5%A4%A7%E5%9B%BE%E7%89%87%E7%BC%93%E5%AD%98%E5%8E%9F%E7%90%86%E3%80%81%E7%89%B9%E6%80%A7%E5%AF%B9%E6%AF%94
Android Universal Image Loader 源码分析
http://a.codekk.com/detail/Android/huxian99/Android%20Universal%20Image%20Loader%20%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90
动画框架:
公共技术点之 Android 动画基础
http://b.codekk.com/blogs/detail/559623d8d6459ae793499787
Side Menu.Android 源码解析
http://a.codekk.com/detail/Android/Grumoon/android-Ultra-Pull-To-Refresh%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90
注解框架:
Dagger、butterknife
-
butterknife
利用 annotation 帮你快速完成 View 的初始化,减少代码
项目地址:https://github.com/JakeWharton/butterknife
文档介绍:http://jakewharton.github.io/butterknife/
ButterKnifeZelezny
用于快速生成ButterKnifeView 注入代码的 Android Studio/IDEA 插件
项目地址:https://github.com/inmite/android-butterknife-zelezny
-
Dagger
依赖注入,适用于 Android 和 Java
项目地址:https://github.com/square/dagger
原理剖析文档:Dagger
文档介绍:http://square.github.io/dagger/
公共技术点之依赖注入
http://a.codekk.com/detail/Android/%E6%89%94%E7%89%A9%E7%BA%BF/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8B%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5
Dagger 源码解析
http://a.codekk.com/detail/Android/%E6%89%94%E7%89%A9%E7%BA%BF/Dagger%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90
上拉刷新,下拉加载:
Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
http://blog.csdn.net/guolin_blog/article/details/9255575
android-Ultra-Pull-To-Refresh 源码解析
http://a.codekk.com/detail/Android/Grumoon/android-Ultra-Pull-To-Refresh%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90
数据库:
LitPal:
Android数据库高手秘籍
http://blog.csdn.net/sinyu890807/article/category/2522725
菜单:
分类侧滑菜单:Side-Menu.Android
https://github.com/Yalantis/Side-Menu.Android
Context-Menu.Android:
漂亮带有动画效果的上下文菜单
https://github.com/Yalantis/Context-Menu.Android
响应式编程:
深入浅出RxJava四-在Android中使用响应式编程
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0426/2787.html
深入浅出RxJava三--响应式的好处
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0409/2703.html
深入浅出RxJava(二:操作符)
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0309/2571.html
深入浅出RxJava(一)基础篇
http://www.imooc.com/article/2304
深入浅出RxJava(一:基础篇) ——csdn博客系列
http://blog.csdn.net/lzyzsd/article/details/41833541
RxAndroid
对RxJava在Android上的扩展,使得Android上也很容易实现reactive components,简化线程操作,从而写出很漂亮的代码。
项目地址: https://github.com/ReactiveX/RxAndroid
文档介绍: 给Android 开发者的 RxJava 详解
工具相关:
AndroidUtiles 集合了所有常用的安卓工具类 项目地址: https://github.com/l123456789jy/Lazy
日志输出:
LogUtils
https://github.com/pengwei1024/LogUtils
崩溃统计平台:
腾讯BugLy
检查内存泄露:
https://github.com/square/leakcanary
多媒体相关:
Vitamio
是一款 Android 与 iOS 平台上的全能多媒体开发框架
项目地址: https://github.com/yixia/VitamioBundle
网站介绍: http://www.vitamio.org/docs/
特点:(1) 全面支持硬件解码与 GPU 渲染
(2) 能够流畅播放 720P 甚至 1080P 高清 MKV,FLV,MP4,MOV,TS,RMVB 等常见格式的视频
(3) 在 Android 与 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8)等常见的多种视频流媒体协议,包括点播与直播。
图片处理:
uCrop
Yalantis 出品的强大的图片裁剪库 ,支持缩放,旋转图片,支持各种比例的裁剪框
项目地址:https://github.com/Yalantis/uCrop
android-crop
图片裁剪 Activity 项目地址: https://github.com/jdamcd/android-crop
打包APK:
umeng-muti-channel-build-tool
渠道打包工具
项目地址: https://github.com/umeng/umeng-muti-channel-build-tool
另可参见 Google 的构建系统 Gradle: http://tools.android.com/tech-docs/new-build-system/user-guide
android-resource-remover
根据 lint 的提示删除项目中无用的资源,减少包的大小
项目地址: https://github.com/KeepSafe/android-resource-remover
公共技术点之 View 绘制流程
http://a.codekk.com/detail/Android/lightSky/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8B%20View%20%E7%BB%98%E5%88%B6%E6%B5%81%E7%A8%8B
BaseAdapterHelper 源码分析
http://a.codekk.com/detail/Android/hongyangAndroid/BaseAdapterHelper%20%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90
公共技术点之 Java 动态代理
http://a.codekk.com/detail/Android/Caij/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8B%20Java%20%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86
Android Fragment应用实战,使用碎片向ActivityGroup说再见
http://blog.csdn.net/guolin_blog/article/details/13171191
Complete Android Fragment & Activity Lifecycle
完整的 Android Fragment/Activity 生命周期图
项目地址: https://github.com/xxv/android-lifecycle
PagerSlidingTabStrip 源码解析
http://a.codekk.com/detail/Android/ayyb1988/PagerSlidingTabStrip%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90
android开发一般都使用什么框架?
SlideAndDragListView
https://github.com/Trinea/android-open-project
SwipeMenuListView
https://github.com/baoyongzhang/SwipeMenuListView
GridView with Header and Footer
和ListView一样带头部和底部的GridView,用法和ListView一样
https://github.com/liaohuqiu/android-GridViewWithHeaderAndFooter