Android学习路线总结,绝对干货

294 人赞同了该文章

title: Android学习路线总结,绝对干货
tags: Android学习路线,Android学习资料,怎么学习android
grammar_cjkRuby: true

一、前言

不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。

如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大。

最近看到很多Android新手问Android学习路线,学习方法啊,如何入门啊,所以我从网上找了一些资料,然后以我的工作经验给大家总结一下,让你们少走弯路,提取一些工作中经常用到的技术。

二、学习知识汇总

1、Java se基础

1).Java基本数据类型与表达式,分支循环。
2).String和StringBuffer的使用、正则表达式。
3).面向对象的抽象,封装,继承,多态,类与对象,对象初始化和回收;构造函数、this关键字、方法和方法的参数传递过程、static关键字、内部类。
4).对象实例化过程、方法的覆盖、final关键字、抽象类、接口、继承的优点和缺点剖析;对象的多态性:子类和父类之间的转换、抽象类和接口在多态中的应用、多态带来的好处。
5).Java异常处理,异常的机制原理。
6).常用的设计模式:Singleton、Template、Strategy模式。
7).JavaAPI介绍:种基本数据类型包装类,System和Runtime类,Date和DateFomat类等。
8).Java集合介绍:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator等常用集合类API。
9).JavaI/O输入输出流:File和FileRandomAccess类,字节流InputStream和OutputStream,字符流Reader和Writer,以及相应实现类,IO性能分析,字节和字符的转化流,包装流的概念,以及常用包装类,计算机编码。
10).Java高级特性:反射和泛型。
11).多线程原理:如何在程序中创建多线程(Thread、Runnable),线程安全问题,线程的同步,线程之间的通讯、死锁。

2、android UI编程

1)、Android开发环境搭建:Android介绍,Android开发环境搭建,第一个Android应用程序,Android应用程序目录结构。

2)、Android初级控件的使用:

TextView控件的使用
Button控件的使用方法
EditText控件的使用方法
ImageView的使用方法
RadioButton的使用方法
Checkbox的使用方法
Menu的使用方法

3)、Android高级控件的使用:

ListView的使用方法
GridView的使用方法
Adapter的使用方法
Spinner的使用方法
Gallary的使用方法
ScrollView的使用方法
RecyclerView

4、对话框与菜单的使用:

Dialog的基本概念
BlockquoteAlertDialog的使用方法
DatePickerDialog的使用方法
Menu的使用方法
自定义Menu的实现方法

5.控件的布局方法:

线性布局的使用方法
相对布局的使用方法

6.多Acitivity管理:

AndroidManifest.xml文件的作用
Intent的使用方法
使用Intent传递数据的方法
启动Activity的方法
IntentFilter的使用方法
Activity Group的使用方法

7、自定义控件实现方法:

自定义ListView的实现方法
可折叠ListView的使用方法
自定义Adapter的实现方法
自定义View的实现方法
动态控件布局的上实现方法
上拉刷新下拉加载更多

3、android网络编程与数据存储

1).基于Android平台的HTTP通讯:

Http协议回顾
使用Get方法向服务器提交数据的方法
使用POST方法向服务器提交数据的实现方法
使用Http协议实现多线程下载
使用Http协议实现断点续传

2).Android数据存储技术:

SQLite3数据库简介
SQL语句回顾
SQLite3编程接口介绍
SQLite3事务管理
SQLite3游标使用方法
SQLite3性能分析
访问SDCard的方法
访问SharedPreferences的方法

参考自:Android学习路线

三、进阶之路(初级->中级->高级)

1、初级工程师

小明之前完全没接触过Android开发,是个应届生,他的待遇是13k,然后小明以校招的身份进入了百度,然后小明需要怎么学习才能成为初级工程师呢?这个时候,小明对编程基础、数据结构、C语言都有一定基础,Java语法什么的也都掌握的比较好,Android才有java语言,无奈的是小明并不会搞Android。

小明首先需要购买一本Android入门的书籍,为了更快地学习Android,小明业余时间也都用来一边看书一边照着书中的例子敲代码,结果2周时间小明就把这本书学了一遍。看完这本书后,小明对Android的历史、结构、代码规范等都有了一个大概的了解,并且,小明已经可以写出一些简单的Activity了。这个时候在小明眼里,Android开发很简单很好玩,通过在xml中摆放一些按钮文本框什么的就可以做一些界面了。

小明开始跟着他的技术导师做需求,一些简单的小需求小明自然是不在话下了。突然有一天来了一个需求,该需求要求小明在Activity中为一个button加一个动画效果,小明慌了:“完全没接触过,书上也没有讲,怎么办呢?”小明冷静了下,打开了百度搜索,输入“Android 动画”,打开前几个链接,小明恍然大悟,照着网上的例子把需求给实现了。后来导师告诉他:“学好Android,官方文档是必须看的,既全面又权威”。然后小明如获至宝,花了一年时间把上面的guide和training都看了一遍,并且他还动手抄了几个小例子。

有一天,小明又需要做一个动画相关的需求,这可难不倒小明,它熟练地打开了百度一下,你就知道,输入“Android 动画”,突然他楞了一下:”总不能每次写动画都要百度一下吧!“,于是他在CSDN开了一个博客,把动画相关的知识点都写上去,为的是后面再写动画相关的代码就不用百度去搜了,事实如何呢?后面再写动画相关的代码,小明的确不用再去百度搜了,因为通过写一篇动画博客,他把动画相关的细节都已经记住了,这样他就可以不用再去参考任何文档了,后来小明还学会了把一些琐碎的不方便放在博客上的东西写到了印象笔记上面,什么时候忘了10秒钟以内都可以快速找回来,而不是花10分钟去再次搜索一遍。

这里总结一下,Android入门的时候,需要有一本入门书,好好学习书中的内容,同时花一年时间把Android官方文档中的training和guide看一遍,同时通过写博客和记笔记的方式来做总结,建议让自己的每篇博客都有价值些。通过一年时间的学习,相信每个人都可以达到中级工程师的水平。

技术要求:

  • 基本知识点
    比如四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画等常见技术
  • 书籍推荐
    《第一行代码 Android》、《疯狂Android》
2、中级工程师

小明经过一年的努力学习终于成为Android中级工程师了,月薪变成了17k。到了中级工程师,已经可以在公司里干很多体力活了,但是一些很重要的任务小明还不能一个人承担起来,这个时候小明需要学习的内容就很多了,如下所示:

  • AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别;
  • Binder:从Java层大概理解Binder的工作原理,懂Parcel对象的使用;
  • 多进程:熟练掌握多进程的运行机制,懂Messenger、Socket等;
  • 事件分发:弹性滑动、滑动冲突等;
  • 玩转View:View的绘制原理、各种自定义View;
  • 动画系列:熟悉View动画和属性动画的不同点,懂属性动画的工作原理;
  • 懂性能优化、熟悉mat等工具
  • 懂点常见的设计模式

学习方法

阅读进阶书籍,阅读Android源码,阅读官方文档并尝试自己写相关的技术文章,需要有一定技术深度和自我思考。在这个阶段的学习过程中,有2个点是比较困扰大家的,一个是阅读源码,另一个是自定义View以及滑动冲突。

如何阅读源码呢?这是个头疼的问题,但是源码必须要读。阅读源码的时候不要深入代码细节不可自拔,要关注代码的流程并尽量挖掘出对应用层开发有用的结论。另外仔细阅读源码中对一个类或者方法的注释,在看不懂源码时,源码中的注释可以帮你更好地了解源码中的工作原理,这个过程虽然艰苦,但是别无他法。

如何玩转自定义View呢?我的建议是不要通过学习自定义view而学习自定义view。为什么这么说呢?因为自定义view的种类太多了,各式各样的绚丽的自定义效果,如何学的玩呢!我们要透过现象看本质,更多地去关注自定义view所需的知识点,这里做如下总结:

  • 搞懂view的滑动原理
  • 搞懂如何实现弹性滑动
  • 搞懂view的滑动冲突
  • 搞懂view的measure、layout和draw
    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

在此为大家准备了四节优质的Android高级进阶视频:

架构师项目实战——全球首批Android开发者对Android架构的见解

附相关架构及资料

image.png

往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。**

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 Android 学习文档总结 ................... 1 DevDiv 推荐资源 ........................ 2 Windows 8 ........................................................... 2 iOS ....................................................................... 2 Android ................................................................ 2 Windows Phone ................................................... 2 其它 ..................................................................... 2 目录 3 第 1 章 Android 系统结构与初始化流程10 1.1. Android 的发展历史回顾 ............... 10 1.1.1. Android 系统的发布 .............. 10 1.1.2. Android 版本的发展情况 ...... 10 1.2. Android 系统架构 ........................... 12 1.2.1. 应用程序层 ............................ 12 1.2.2. 应用程序框架层 .................... 13 1.2.3. 系统运行库层: ....................... 13 1.2.4. Linux 内核层 .......................... 15 1.3. Android 系统的初始化流程 ........... 15 1.3.1. 启动 BootLoader .................... 15 1.3.2. 加载系统内核 ........................ 15 1.3.3. 启动 Init 进程 ......................... 16 1.3.4. 启动 Zygote 进程 ................... 16 1.3.5. 启动 Runtime 进程 ................ 17 1.3.6. 启动本地服务 ........................ 18 1.3.7. 启动 Home Laucher ............... 19 第 2 章 第二章 ................... 21 2.1. Activity 的架构设计 ....................... 21 2.1.1. 概述 ........................................ 21 2.1.2. 应用程序进程空间 ................ 21 2.1.3. ActivityThread 运行框架 ...... 24 2.1.4. Activity 加载过程 .................. 25 2.2. Activity 的生命周期 ....................... 27 2.2.1. Activity 的生命周期图 .......... 27 2.2.2. Activity 的四种状态 .............. 29 2.2.3. Activity 的生命周期循环 ...... 30 4 2.2.4. Activity 中四个重要的概念 .. 30 2.3. 旋转屏幕重新加载 Acitivity .......... 33 第 3 章 第三章 ................... 40 3.1. 缓冲界面 ......................................... 40 3.1.1. Demo1 .................................... 40 3.1.2. Demo2 .................................... 47 3.2. 宫格界面 ......................................... 52 3.2.1. 示例分析: ............................ 52 3.2.2. 效果展示 ................................ 58 3.3. Tab 界面 .......................................... 59 3.3.1. 示例分析 ................................ 60 3.3.2. 效果展示 ................................ 63 3.4. 二级列表 ......................................... 65 3.4.1. 示例分析 ................................ 65 3.4.2. 效果展示 ................................ 73 3.5. 抽屉效果 ......................................... 74 3.5.1. 示例分析 ................................ 76 3.5.2. 效果展示 ................................ 78 3.6. 使用 ViewFlipper 实现左右滑动效果82 3.6.1. 原理分析 ................................ 82 3.6.2. 示例分析 ................................ 83 3.6.3. 效果展示 ................................ 87 3.7. 使用 ViewPager 实现左右滑动效果89 3.7.1. Demo1 .................................... 90 3.7.2. Demo2 .................................... 98 3.8. Android Gallery ............................. 100 3.8.1. Demo1 .................................. 101 3.8.2. Demo2 .................................. 105 3.9. 悬浮框 ........................................... 107 3.9.1. 原理分析 .............................. 107 3.9.2. 示例分析 .............................. 107 3.9.3. 运行效果 .............................. 111 第 4 章 第四章 .................. 112 4.1. ListView 和 Adapter 的关系 ......... 112 4.1.1. 原理分析 .............................. 112 4.1.2. 示例分析: .......................... 115 4.1.3. 运行效果 .............................. 117 4.2. ListView 绑定 EmptyView ............ 118 4.2.1. 原理分析 .............................. 118 4.2.2. 示例分析 .............................. 119 5 4.3. 自定义 Adapter.............................. 129 4.3.1. 原理分析 .............................. 129 4.3.2. 示例分析 .............................. 130 4.3.3. 运行效果 .............................. 136 4.4. ListView 的使用技巧 .................... 136 4.4.1. 原理分析 .............................. 136 4.4.2. 示例分析 .............................. 140 4.4.3. 运行效果 .............................. 147 第 5 章 定制控件 ................ 152 5.1. 扩展系统控件 ............................... 152 5.1.1. 原理分析 .............................. 152 5.1.2. 示例分析 .............................. 153 5.1.3. 效果展示 .............................. 155 5.2. 自绘控件 ....................................... 155 5.2.1. 示例分析 .............................. 155 5.2.2. 运行效果 .............................. 159 5.3. 触屏事件处理 ............................... 160 5.3.1. 原理分析 .............................. 160 5.3.2. 示例分析 .............................. 162 5.3.3. 运行效果 .............................. 169 5.4. 扩展 ViewGroup 类 ....................... 169 5.4.1. 原理分析 .............................. 169 5.4.2. 示例分析 .............................. 170 5.4.3. 运行效果 .............................. 174 5.5. 自定义控件属性 ........................... 176 5.5.1. 原理分析 .............................. 176 5.5.2. 示例分析 .............................. 178 5.5.3. 运行效果 .............................. 178 5.6. 定制控件的 Style .......................... 179 5.6.1. 原理分析 .............................. 179 5.6.2. 示例分析 .............................. 181 5.6.3. 运行效果 .............................. 181 第 6 章 Drawable 分类汇总 ....... 183 6.1. Drawable 的分类 ........................... 183 6.1.1. ColorDrawable...................... 183 6.1.2. GradientDrawable ................. 184 6.1.3. BitmapDrawable ................... 190 6.1.4. NinePatchDrawable .............. 192 6.1.5. InsetDrawable ....................... 195 6.1.6. ClipDrawable ........................ 196 6 6.1.7. ScaleDrawable ...................... 198 6.1.8. RotateDrawable .................... 200 6.1.9. AnimationDrawable .............. 202 6.1.10. LayerDrawable ..................... 203 6.1.11. LevelListDrawable ............... 204 6.1.12. StateListDrawable ................ 207 6.1.13. TransitionDrawable .............. 211 6.2. 本章小结 ....................................... 213 第 7 章 图像操作技巧 ............ 214 7.1. 位图资源 ....................................... 214 7.1.1. 加载位图资源 ...................... 214 7.1.2. 创建位图资源 ...................... 216 7.1.3. 保存位图资源 ...................... 217 7.2. 常用的位图操作 ........................... 219 7.2.1. View 转换为 Bitmap ............ 219 7.2.2. 图片圆角处理 ...................... 222 7.2.3. 图片灰化处理 ...................... 224 7.2.4. 提取图像 Alpha 位图........... 225 7.2.5. 图像变换 .............................. 227 7.3. 内存溢出(OOM)问题 .............. 235 第 8 章 布局优化 ................ 236 8.1. 复用布局文件 ............................... 236 8.2. 布局的层次结构 ........................... 240 8.2.1. Heirachy Viewer ................... 241 8.2.2. 创建高效的布局 .................. 244 8.2.3. 合并布局 .............................. 250 8.2.4. 提高控件的查找效率 .......... 255 8.3. 布局文件延迟加载 ....................... 258 8.4. 本章小结 ....................................... 263 第 9 章 Android 的消息模型 ...... 264 9.1. UI 线程 .......................................... 264 9.2. 消息模型 ....................................... 268 9.2.1. 消息系统的基本原理 .......... 268 9.2.2. Android 的消息模型 ............ 269 9.2.3. 实例分析 .............................. 272 9.2.4. Handler 常见用法 ................ 285 9.3. 本章小结 ....................................... 292 第 10 章 Android 网络通信 ........ 293 10.1. 使用 HttpURLConnection 发送 Post/Get 请求 293 10.2. 设置 Proxy 访问网络 .................... 296 7 10.3. 文件下载断点续传的实现 ............ 298 10.3.1. 设计下载任务进度类 DownloadBean 298 10.3.2. 创建下载线程并可随时中断线程 299 10.3.3. 设置网络链接读取资源的有效范围 300 10.3.4. 使用 RandomAccessFile 随机读写文件 301 10.4. Android 网络通信补充资料 ......... 302 10.5. 本章小结 ....................................... 302 第 11 章 桌面组件 AppWidget ...... 303 11.1. AppWidget ..................................... 303 11.1.1. AppWidget 简介 ................... 303 11.1.2. AppWidget 架构 ................... 304 11.1.3. AppWidget 框架相关类简介307 11.2. AppWidget 开发步骤详解 ............ 310 11.2.1. AppWidgetProvider 类的使用310 11.2.2. AppWidget 开发实例 ........... 313 11.3. AppWidget 的补充资料 ................ 322 11.4. 本章小结 ....................................... 323 第 12 章 Android 系统服务 ........ 324 12.1. 系统服务介绍 ............................... 324 12.1.1. 系统服务简介 ...................... 324 12.1.2. 获得系统服务 ...................... 325 12.2. 系统服务开发详解 ....................... 326 12.2.1. 电源服务开发 ...................... 326 12.2.2. 窗口管理服务开发 .............. 329 12.2.3. Layout 扩展服务开发 .......... 331 12.2.4. Activity 服务开发 ................ 334 12.2.5. Notification 服务开发 .......... 337 12.2.6. 闹钟服务开发 ...................... 343 12.2.7. KeyGuard 服务开发 ............. 349 12.2.8. 位置服务开发 ...................... 351 12.2.9. Vibraror 服务开发 ................ 359 12.3. 本章小结 ....................................... 361 第 13 章 多媒体开发 .............. 362 13.1. Android 多媒体系统简介 ............. 362 13.1.1. Android 多媒体系统架构 .... 362 13.1.2. Android 多媒体系统功能 .... 364 13.1.3. OpenCore 简介 ..................... 365 13.1.4. OpenMAX 简介 ................... 365 13.2. MediaPlayer 的使用 ...................... 366 13.2.1. 初始化和准备播放 .............. 368 8 13.2.2. 播放控制 .............................. 369 13.2.3. 释放播放资源 ...................... 370 13.2.4. 视频播放 .............................. 370 13.2.5. 音频播放 .............................. 377 13.3. 音频视频录制 ............................... 379 13.3.1. 使用意图录制音频视频 ...... 379 13.3.2. 使用 MediaRecorder 音频视频录制 379 13.3.3. MediaRecorder 使用实例..... 382 13.4. Camera 使用 .................................. 387 13.4.1. Camera 简介 ......................... 387 13.4.2. 运用 Intent 捕获照片 ........... 388 13.4.3. 调用 Camera 组件捕获照片 389 13.5. SoundPool 类的使用 ..................... 393 13.5.1. SoundPool 类简介与适用场合393 13.5.2. 使用 SoundPool 播放声音 ... 395 13.6. 本章小结 ....................................... 398 第 14 章 图片异步加载及缓存 ...... 399 14.1. 异步加载与缓存的重要性 ............ 399 14.2. 垃圾回收机制与引用类型 ............ 400 14.2.1. JAVA 的垃圾回收机制 ........ 400 14.2.2. JAVA 引用类型 .................... 401 14.2.3. 使用软引用构建缓存 .......... 406 14.3. 本章小结 ....................................... 423 第 15 章 移动广告平台 ............ 424 15.1. 移动应用广告平台发展现状 ........ 424 15.2. 移动广告平台发展趋势 ................ 430 15.3. 移动广告平台的盈利模式 ............ 433 15.4. 选择广告平台 ............................... 434 15.4.1. 国内移动广告平台简介 ...... 434 15.4.2. 平台选择参考标准 .............. 435 15.5. 嵌入式广告插件 ........................... 436 15.6. 本章小结 ....................................... 446 第 16 章 Android 代码优化技术 .... 447 16.1. Android 代码优化技术 ................. 447 16.1.1. 尽可能避免创建不必要的对象447 16.1.2. 方法调用代码优化 .............. 449 16.1.3. 代码变量优化 ...................... 451 16.1.4. 代码过程优化 ...................... 453 16.2. 内存泄露代码优化及检测 ............ 457 16.2.1. 内存泄露 .............................. 457 9 16.2.2. 内存泄漏检测工具 .............. 457 16.2.3. MAT 使用示例 ..................... 458 16.3. Android 代码混淆技术 ................. 461 16.3.1. ProGuard 简介 ...................... 462 16.3.2. ProGuard 使用 ...................... 463 16.4. 本章小结 ....................................... 467 第 17 章 加解密 .................. 468 17.1. 保护自己的应用程序不被篡改 .... 468 17.2. BASE 64 编码对信息加密 ........... 471 17.3. RSA 算法使用介绍 ....................... 474 17.4. 本章小结 ....................................... 479
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值