Android 学习指南(2017版)
Android 学习指南
不断有新人来询问如何学习Android,很多都是无从下手,没有任何概念。正好好久没写文章了,今天来整理一下Android学习大纲,同时也会附上部分学习资料,主要还是希望大家能够根据我提供的关键词和思路,自己逐个突破。
Java基础
首先是学习Java语言基础,很多人不明白,我不是学Android么,怎么又学Java了?你家的房子是用砖头堆出来的,隔壁的小区也是砖头堆出来的,就算是故宫,那还得用砖头呀。当然了,还有很多建筑物不是用砖头的,有的是纯木头建造,有的是玻璃的、钢材的、石头的等等。Java不仅可以用于Android开发,还有其他的开发用途,反之,Android也不是只能用Java开发,其他也行,这个我们下面再讲。
Java的体系很大,但是我们并不需要全部学习,只需要学习Android开发中用到的内容,至于Java相关的其他内容比如Swing、JSP、SpringMVC框架等这些内容我们并不需要学习。
我们需要学习的Java知识有:
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符与表达式
- Java 分支:if...else/switch
- Java 循环语句:for/while/do...while
- Java Array、List、Map、Set、Collection
- Java 流(Stream)、文件(File)和IO
- Java 异常
- Java 继承、接口、抽象类
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 泛型
- Java 线程
- Java 面向对象思想
网上关于Java的学习视频有很多,比如马士兵、Mars的都可以,当然这些都是比较老的教程了,不过对于我们学习语言基础并无大碍,反而经典。
当然学习Java之前你还要搭建好Java开发环境,啥,你以为随便写几行代码就能运行吗?不给你地皮,再多的砖头也造不了房子。环境搭建很简单,无非就是安装JDK、配置环境变量,不同的系统略有差异。然后是开发工具,用什么来开发呢?最简单的可以用记事本,通过命令行编译运行,也可以用其他集成开发工具,例如Eclipse。用什么工具无所谓,不会加工资的,主要是学会Java语言基础。
- 下载 JDK
- 下载 Eclipse
如果你喜欢用记事本的话,那么给你推荐几款编辑器:
- EditPlus (Windows版)
- Notepad (Windows版)
- Sublime Text (Windows版) (Mac版)
Android基础
学完Java就可以步入Android的学习环节了,先讲讲Android开发用什么开发工具呢?有人说Eclipse呀,没错,几年前我们确实用Eclipse,通过配置ADT插件,就可以进行Android开发,以后后来Google还出了集成ADT版的Eclipse,更省事,不过这都是几年前了。现在Google已经不再支持Eclipse,推出了自己的开发工具Android Studio(Eclipse可不是Google的,Android是Google的),所以我们Android开发就是使用Android Studio,且Android Studio是最好用的Android开发工具,没有之一。
- 下载 Android Studio
我们需要学习的Android知识有:
- Android UI组件
- Android Dialog、PopupWindow
- Android Activity和Fragment
- Android 事件机制
- Android 绘图和动画
- Android 数据存储
- Android 广播(Broadcast)和服务(Service)
- Android 网络访问
- Android 蓝牙及相关硬件开发、多媒体等等
以上Android内容只是粗略的章节,大家需要去细化学习,同样,网上也有很多教学视频,不过这里必须推荐我自己录制的Android教程《Android开发视频教程(Java版 | 2017年最新录制)》不吹不黑,绝对是最实用、最新、最详细的Android视频教程,随便看两集便知。
视频教程:
- Android开发视频教程(Java版 | 2017年最新录制)
书籍参考:
- 《第一行代码》,作者博客:郭霖 CSDN
至此,恭喜你,你可以去面试找一份Android开发岗位的工作了,在工作中再去慢慢打磨,一步一步踩坑,做个APP出来是没啥问题的。那么到这就结束了?当然不是,毕竟建个猪圈跟建个东方明珠塔还是有区别的,很多知识是别人教不了的,只有在不断的实践中才能悟出真道理,只需谨记:求知若渴,虚怀若愚。
Android进阶
不能仅限于最基础的开发、控件的基本使用、API的正常调用,很多内容我们只有深入理解之后才能发现新大陆。
- 深入理解Android事件分发机制
- 深入理解Android消息机制
- 擅长View的自定义绘制
- 理解并能合理运用各类设计模式
- 熟悉多线程机制
- 缓存设计
- 性能优化
- 阅读和理解源码Android源码
这里我就不推荐书籍了,推荐几个博客吧:
- 天哥在奔跑 - 简书(自己的务必推荐)
- 郭霖 - CSDN
- 鸿洋 - CSDN
- 任玉刚 - CSDN
Kotlin
为什么又要学习Kotlin呢,不是已经学了Java了吗?在2017年 Google I/O 开发者大会上,Google宣布将Kotlin作为Android官方开发语言。如同Apple推出Swift一样,Kotlin是否会完全取代Java成为Android开发的主流语言,这将由市场一步步验证。作为开发者,我们要做的就是不断提升自己,丰富技能,以应对快速迭代的市场环境。
不建议大家直接学习Kotlin,毕竟目前还没有整体过渡到Kotlin,一切以实际情况为主,还是先把Java学好,并且Java和Kotlin是可以混合使用的。本人后期也会考虑录制Kotlin的视频教程。
学习参考:
- Kotlin - 官方文档
- Kotlin - 菜鸟教程
常用库
在实际开发中,很多时候我们会在项目中使用目前比较成熟的开源库,能够节省大量的开发时间,且这些库有专门的人或团队在维护,比我们自己写可能会更好,何必重复造轮子呢,而且别人的轮子说不定更好。这边我整理了比较常用的开源库供大家参考:
网络请求
- OKHttp
- Retrofit
- Volley
图片加载
- UniversalImageLoader
- Picasso
- Glide
- Fresco
时间日期
- joda-time
数据库
- LitePal
- GreenDAO
依赖注入
- butterknife
- dagger
Log日志
- logger
集成第三方SDK
你的项目还可能用到很多第三方SDK,那么就需要熟悉第三方的SDK使用,还好,这不是什么难点,遇到一个攻克一个即可。
- 百度地图、高德地图
- QQ登录、微信登录、微博登录
- QQ分享、微信分享、微博分享
- 微信支付、支付宝支付、银联支付
- 极光推送、个推
- 友盟统计
MVP模式
MVP是一种开发上的模式,它使得我们不再把所有的代码都写在Activity或者Fragment中,实现了View和Model的解耦,通过Presenter来衔接。
M : Model
V : View
P : Presenter
各人各公司写法多有不同,但是大同小异,Google也给出了相应的Demo供参考:
- MVP - Google Demo
混合开发
在不断的探索中,一种很常用的开发方式已经产生,就是混合开发。什么是混合开发?就是在Android项目中插入H5页面,通过Java和JavaScript之间的相互调用,实现页面之间的无缝对接。这种方式有什么好处呢?节省人力、降低维护成本、适配性好,更新方便。
- 掌握WebView控件的使用
- addJavascriptInterface
- loadUrl
- shouldOverrideUrlLoading
- 其他
- 熟悉H5开发的相关内容
- Html5
- CSS
- Javascript
当然,轮子还是有的,可以参考或直接使用Github上的开源项目:
- Github:WebViewJavascriptBridge
插件化
插件化开发主要利用 Java ClassLoader 的原理,对于 Android 来说是 DexClassLoader,目前也有很多开源框架。
参考博客:
- Android博客周刊专题之#插件化开发#
热修复
热修复和插件化属于一个知识体系,Github上也有很多开源项目,列举几个相对热门的:
- Github:AndFix
- Github:HotFix
- Github:Nuwa
NDK
上面都是在说应用层开发,也是绝大多数人可能从事的内容。当然,大家也可以往底层发展,做NDK相关的开发内容,不好意思,本人没有相关经验。
跨平台开发框架
这个其实不完全属于Android开发内容了,应当属于前端范畴,作为补充知识了解一下。所有WebApp框架(一套代码两个包)基本都有以下特点:
- 使用 Html5 + CSS + JavaScript 开发
- 丰富的UI组件库
- 封装大量JavaScript API
- 提供原生API访问接口
- 提供硬件访问接口
- 提供调试、打包等服务
- 适配性好
介绍几款还算常用的跨平台框架:
React Native
React Native 是 Facebook的开源框架。
React Native 中文网MUI
国产,DCloud出品,配合HBuilder使用,官网号称最接近原生APP体验的高性能前端框架。
MUI 网址
之前也写过一篇关于MUI的文章,大家可以参考HBuilder+MUI那些事儿Ionic
用Ionic必须会AngularJS
Ionic 网址其他
代码管理
在协作开发以及多版本开发时,我们需要使用代码管理工具来帮助保存合并代码,常用以下两种:
SVN
可使用命令行或可视化工具,工具推荐:TortoiseSVN
教程参考:- SVN教程 - 菜鸟教程
- TortoiseSVN 安装配置 - 百度经验
Git
可使用命令行或可视化工具,工具推荐:SourceTree
教程参考:- Git 教程 - 廖雪峰
- 常用 Git 命令清单 - 阮一峰
- SourceTree 的使用 - 百度经验
网站推荐
- 安卓巴士(初学者可以多看看,很多demo可以帮助学习)
- Android开发技术周报
- 美团点评技术团队
如果看到这你还不知道还如何学习Android的话,那么也没关系,世界那么大,为什么非要搞Android呢。
作者:天哥在奔跑
链接:https://www.jianshu.com/p/f6681e417d40
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Android 学习指南(2017版)相关推荐
- 《Android学习指南》目录
转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先 ...
- Carson带你学Android:请收好这一份全面详细的Android学习指南
前言 如果你也学习Android,那么你大概率会看过我的文章.经常有读者给我留言:"该怎么学习Android?"."日常学习Android的方法是什么". 今天 ...
- Android学习指南 第六讲:用户界面 View(二)
本讲内容:常用Layout介绍: AbsoluteLayout和RelativeLayout 点此下载:<ignore_js_op> lesson6.zip (114.78 KB, 下载次 ...
- Android学习指南
目录 核心分析内容 1.学什么 1.1.Android基础 & 常用 1.2.Android进阶 1.3.与时俱进.热门技术 1.4.编程语言:Java与Java虚拟机 1.5.计算机基础 1 ...
- 微信小程序趋势及前景,详细的Android学习指南
**新技术层出不穷,去年kotlin到如今Flutter,技术迭代,你是否会变得固步自封?**那么看本篇文章帮你解决问题,让你知道怎么样学习,学习那些技术点才能不被时代的迭代快速淘汰! 首先,先说一下 ...
- 安卓交流社区!阿里P8架构师的Android大厂面试题总结,详细的Android学习指南
面试了一位工作12年的程序员, 这位老哥有3年java开发经验,2年H5,7年Android开发经验,简历上写着精通Java,Android,熟悉H5开发.没有具体的技术点. 说实话我很期待这位老哥的 ...
- 全套学习!系统学Android从零开始,详细的Android学习指南
开头 互联网时代的到来,让我们获取知识变得更加简单,理论上讲只要你想学,便会有不尽的知识等你,只要方法得当,够努力,任何人都可以都有可能成为大牛. 自己在努力的基础上,还学习了一些高效的学习方法,让我 ...
- 字节大牛耗时八个月又一力作,详细的Android学习指南
开头 互联网时代的到来,让我们获取知识变得更加简单,理论上讲只要你想学,便会有不尽的知识等你,只要方法得当,够努力,任何人都可以都有可能成为大牛. 自己在努力的基础上,还学习了一些高效的学习方法,让我 ...
- android自学难吗!我离职后面试收割小米等大厂offer,详细的Android学习指南
最近很多人说,Android越来越不好找工作了,学习NDK开发会不会好点,今天就聊聊这个问题.是否应该选择学NDK? 1.哪些场景下要用到NDK开发? 跨平台的库,如FFmpeg, skip,weex ...
最新文章
- 身份证丢失后被刷脸欠上万贷款,银行:人脸识别到就是你借的!
- C++写的一个简单的词法分析器(分析C语言)
- Domain Model
- 直播预告 | 如何在有限数据下实现资讯类网站海量信息自动分类
- java分布式 mq_分布式系统消息中间件—RabbitMQ的使用进阶篇
- 大气的压力竟然能吊起相扑力士!?
- java构造函数重载继承_Java基础-继承 - 写代码换盆的个人空间 - OSCHINA - 中文开源技术交流社区...
- C++一维数组指针详解
- [C++] string
- socket不能bind请求的地址_深入浅出讲解:php的socket通信
- S MT 精密电阻 对照 表
- 记录自己在pyqt5用电脑摄像头拍照并保存照片过程中发现的问题
- 区分gym中的gym.make()函数与gym.vector.make()函数
- 苹果5更新系统无服务器,苹果5手机系统更新不了出现无法检查更新怎么处理
- 把Eclipse修改为黑色主题!配色方案详细图文并茂可供下载!
- 【分布式版本控制系统Git】| Git 分支操作、Git 团队协作机制、GitHub 操作
- ZYNQ上无DDR加载应用
- 1. 编写函数 cal_numbers:参数为字符串,统计并返回该字符串中的英文字母、空格、数字和其它字符的个数
- matlab光盘映像文件可以删除吗_Mathworks Matlab R2011a 下载 光盘镜像下载
- EasySearcher搜索不到EasyNVR硬件的IP地址,如何解决?
热门文章
- 转载--tomcat整合apr
- 超摩尔定律!OpenAI官宣AI算法效率每16个月翻一番
- 一台加密货币ATM机月营收额高达3万美金
- linux驱动读取文件失败怎么办,linux – 由于单个驱动器读取错误导致软件RAID-1导致内核故障...
- MySQL - 索引下推 Index Condition Pushdown 初探
- Oracle-Oracle SQL Report (awrsqrpt.sql/awrsqrpi.sql)生成指定SQL的统计报表
- 实战SSM_O2O商铺_23【商铺列表】Controller层开发
- Spring-基于Spring使用自定义注解及Aspect实现数据库切换
- Oracle优化03-Latch和等待
- 对html5的了解,HTML5——对HTML5的认识