初步整理,多维度的学习资料,后期会陆续加上链接。
视频学习:
红树林教育
Steven 教你学 Android
黑马程序员
慕课网
极客学院
麦子学院
技术博客
CodeKK
开源项目源码解析及优秀开源项目分享
Trinea
性能优化、源码解析
老罗的 Android 之旅
Android 系统源代码分析
开发技术前线
Mr.Simple 维护的社区网站
CSDN 博客专家
夏安明
兰亭风雨
赵凯强
qinjuning
工匠若水
张兴业
任玉刚 《Android开发艺术探索》
郭霖 《第一行代码》
鸿洋
Coder-pig 最佳入门专栏
全速前行 主讲实战技巧和平常遇到的问题
郑海波 文章大多与自定义控件相关
著名博主
胡凯 —— 专注性能优化
张明云 —— Android 学习之路
Drakeet —— 贝壳单词 APP 开发者
徐宜生 —— 《Android群英传》作者
代码家 —— 著名博主
脉脉不得语 —— 著名博主
高建武 —— 专注性能优化,简书著名博主
程序亦非猿—— 简书著名博主
廖祜秋liaohuqiu_秋百万 —— 淘宝职员
hi大头鬼hi —— 对RxJava有较深的研究
阳春面 —— 简书著名博主
开发技术前线 —— 《Android源码设计模式》作者 Mr.Simple 维护的社区网站
爱哥 ——《Android源码设计模式》关爱民
Keegan小刚 —— 分享了多篇 Android 样式的文章
吴小龙同学 —— 分享了多篇关于 AndroidDesignSupportLibrary 的文章
社区
Stackoverflow
V2ex
V2ex Android 板块
Android 开发技术周报
长期更新最新前言资讯
开发技术前线
Mr.Simple 维护的社区网站
泡在网上的日子
大量第三方控件基地
23code
android 经典开源代码分享
App 开发者
分享 Android/IOS/Swift 开发和互联网内容
JavaApk.com
安卓 demo 聚集地,部分源码需 VIP
DevStore
各种 Demo,以及第三方服务
开源中国
书籍
第一行代码
Android 群英传
Android 疯狂讲义
Android 源码设计模式解析与实战
何红辉(Simple哥),关爱民(爱哥)两人,设计模式,设计思想
Android 开发艺术探索
任玉刚,侧重于 Android 知识的体系化和系统工作机制的分析
深入解析 Android 5.0 系统
剖析 Android 5.0 系统主要框架的原理和具体实现
wiki
Android Developer
Android Training
Material Design
Android Weekly
极客学院
项目 代码下载
Github
AndroidBus
eoeAndroid
ITEye
51CTO
通用流行框架
缓存
DiskLruCache
图片加载
Android-University-ImageLoder
Picasso
Fresco
Glide
图片处理
Picasso-transformations
Glide-transformations
Android-gpuimage
网络请求
Android Async Http
AndroidAsync
OKhttp
Retrofit
Volley
网络解析
Json解析
Gson
Fastjson
Jackson
HTML解析
HtmlPaser
Jsoup
数据库
OrmLite
Sugar
GreenDao
ActiveAndroid
SQLBirte
Reaim
依赖注入
ButterKnife
8.0 有Bug 必须在 Gulide 添加代码
Dagger2
AndroidAnotations
RoboGuice
图表
HelloCharts
WillamChart
MPAndroidChart
后台处理
Tape
Android Priority job Queue
事件总线
EventBus
Otto
响应式编程
RxJava
搭建架构
架构设计
MVP模式
MVC模式
clean模式
MVVM模式
常用框架
网络请求
OKHttp + Retrofit + RxJava (向 Java 8 以下兼容的 Retrolambda)
图片加载
Clide
Fresco
picasso
几种框架比较
存储
数据库ORM框架
greenDao
NoSql
realm-java
消息总线
RxBus
EvenBus
依赖注入
ButterKnife
Dagger2
简单例子
子线程和主线程的切换
RxJava 到底是什么? 异步
一个在 JavaVM 上使用可观测的序列来组成异步,基于事件程序的库
RxJava 好在哪里? 简洁
RaJavaJoins
RxAndroid 使用
// Just
public void ObserveableJust() {
Observable.just(0, 1, 2).subscribe(new Action1<Integer>() {
//call方法根据里面的参数依次发送出去 总共调用了三次
@Override
public void call(Integer integer) {
Log.e(TAG, "call" + integer);
//result == 0 1 2
}
});
}
// Range
public void ObserveRange() {
Observable.range(0, 10).subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
Log.e(TAG, "call:" + integer);
//result == 0 1 2 3 4 5 6 7 8 9
}
});
}
// Repeate
public void ObserveableRepeat() {
Observable.just(0, 1).repeat(5).subscribe(new Action1<Integer>() {
@Override
public void call(Integer integer) {
Log.e(TAG, "call:" + integer);
//result == 0 1 ,0 1 ,0 1, 0 1, 0 1
}
});
}
RxBinding
Log框架
Logger
Hugo
Timber
测试框架
Mockito
Robotium
Robolerctric
适配框架
性能优化
内存泄漏检测
LeakCanary
崩溃报告
ACRA
调试框架
Stetho