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版)相关推荐

  1. 《Android学习指南》目录

    转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先 ...

  2. Carson带你学Android:请收好这一份全面详细的Android学习指南

    前言 如果你也学习Android,那么你大概率会看过我的文章.经常有读者给我留言:"该怎么学习Android?"."日常学习Android的方法是什么". 今天 ...

  3. Android学习指南 第六讲:用户界面 View(二)

    本讲内容:常用Layout介绍: AbsoluteLayout和RelativeLayout 点此下载:<ignore_js_op> lesson6.zip (114.78 KB, 下载次 ...

  4. Android学习指南

    目录 核心分析内容 1.学什么 1.1.Android基础 & 常用 1.2.Android进阶 1.3.与时俱进.热门技术 1.4.编程语言:Java与Java虚拟机 1.5.计算机基础 1 ...

  5. 微信小程序趋势及前景,详细的Android学习指南

    **新技术层出不穷,去年kotlin到如今Flutter,技术迭代,你是否会变得固步自封?**那么看本篇文章帮你解决问题,让你知道怎么样学习,学习那些技术点才能不被时代的迭代快速淘汰! 首先,先说一下 ...

  6. 安卓交流社区!阿里P8架构师的Android大厂面试题总结,详细的Android学习指南

    面试了一位工作12年的程序员, 这位老哥有3年java开发经验,2年H5,7年Android开发经验,简历上写着精通Java,Android,熟悉H5开发.没有具体的技术点. 说实话我很期待这位老哥的 ...

  7. 全套学习!系统学Android从零开始,详细的Android学习指南

    开头 互联网时代的到来,让我们获取知识变得更加简单,理论上讲只要你想学,便会有不尽的知识等你,只要方法得当,够努力,任何人都可以都有可能成为大牛. 自己在努力的基础上,还学习了一些高效的学习方法,让我 ...

  8. 字节大牛耗时八个月又一力作,详细的Android学习指南

    开头 互联网时代的到来,让我们获取知识变得更加简单,理论上讲只要你想学,便会有不尽的知识等你,只要方法得当,够努力,任何人都可以都有可能成为大牛. 自己在努力的基础上,还学习了一些高效的学习方法,让我 ...

  9. android自学难吗!我离职后面试收割小米等大厂offer,详细的Android学习指南

    最近很多人说,Android越来越不好找工作了,学习NDK开发会不会好点,今天就聊聊这个问题.是否应该选择学NDK? 1.哪些场景下要用到NDK开发? 跨平台的库,如FFmpeg, skip,weex ...

最新文章

  1. 身份证丢失后被刷脸欠上万贷款,银行:人脸识别到就是你借的!
  2. C++写的一个简单的词法分析器(分析C语言)
  3. Domain Model
  4. 直播预告 | 如何在有限数据下实现资讯类网站海量信息自动分类
  5. java分布式 mq_分布式系统消息中间件—RabbitMQ的使用进阶篇
  6. 大气的压力竟然能吊起相扑力士!?
  7. java构造函数重载继承_Java基础-继承 - 写代码换盆的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. C++一维数组指针详解
  9. [C++] string
  10. socket不能bind请求的地址_深入浅出讲解:php的socket通信
  11. S MT 精密电阻 对照 表
  12. 记录自己在pyqt5用电脑摄像头拍照并保存照片过程中发现的问题
  13. 区分gym中的gym.make()函数与gym.vector.make()函数
  14. 苹果5更新系统无服务器,苹果5手机系统更新不了出现无法检查更新怎么处理
  15. 把Eclipse修改为黑色主题!配色方案详细图文并茂可供下载!
  16. 【分布式版本控制系统Git】| Git 分支操作、Git 团队协作机制、GitHub 操作
  17. ZYNQ上无DDR加载应用
  18. 1. 编写函数 cal_numbers:参数为字符串,统计并返回该字符串中的英文字母、空格、数字和其它字符的个数
  19. matlab光盘映像文件可以删除吗_Mathworks Matlab R2011a 下载 光盘镜像下载
  20. EasySearcher搜索不到EasyNVR硬件的IP地址,如何解决?

热门文章

  1. 转载--tomcat整合apr
  2. 超摩尔定律!OpenAI官宣AI算法效率每16个月翻一番
  3. 一台加密货币ATM机月营收额高达3万美金
  4. linux驱动读取文件失败怎么办,linux – 由于单个驱动器读取错误导致软件RAID-1导致内核故障...
  5. MySQL - 索引下推 Index Condition Pushdown 初探
  6. Oracle-Oracle SQL Report (awrsqrpt.sql/awrsqrpi.sql)生成指定SQL的统计报表
  7. 实战SSM_O2O商铺_23【商铺列表】Controller层开发
  8. Spring-基于Spring使用自定义注解及Aspect实现数据库切换
  9. Oracle优化03-Latch和等待
  10. 对html5的了解,HTML5——对HTML5的认识