Android入门教程之我见
真正的从安卓入门学习到实际工作也差不多一年时间了,也做了几个项目。在这期间经历了一开始学习Android的基本知识后仍旧无从下手,不知道如何开始开发一个app,到现在也开始学会注意Android架构的设计优化,学会开始阅读源码,渐渐地向Android更高级的知识进阶。
首先要感谢一下Google把Android开源了,加上Android开发人员十分活跃且富有分享精神,这才让网上关于Android的资料十分丰富,往往遇到一个问题都能从网上找到答案,这对于初学者特别是靠自学没有人带的情况下提供很多的帮助。但是我们不能满足于“拿来主义”,很多人做过几个项目后也很快就上手了,能够根据需求快速设计UI,能够使用常用的API,对一些第三方的开源库使用也十分熟练,但是是不是仅仅这样就够了?如果是这样的其实代表你还是处于初级水平,很多高校实习生或者培训机构出来的都能完成这样的工作。所以我们不应该故步自封,还是要活到老,学到老~
好了,废话不多说。我想从我自己的学习经历总结一下,希望对以后的学习Android开发的人有一点帮助吧。
1、关于Java学习
对于完全的新手,总有个疑问。是否要把Java精通了才能开始去学习Android。从我自己的经验来看,完全没有必要。Android开发使用的Java语言的语法知识都是是否基础的,如果你已经有一门编程语言,例如C,C++甚至是脚本语言Python,JavaScript,学习Java的基础知识其实很快。我自己是科班出身的,我们学校是大三才开的Java课程,大一大二就学过C,C++。如果你有一些基础的话,根据每个人的基础不同学习的速度也不一样,但是不要陷入到语法细节里面。最后的方法是在学习后马上实践,在实践中学习才是最快的。在基础知识了解得差不多了就可以开始学习Android开发的基础知识了。但是如果以后你想向更高级的路走就有必要回过头来把Java的一些高级知识了解一下了。关于Java基础的我认为只要先了解一下基本的语法知识,面向对象的三个特点,文件、String、异常处理,当然常用的数据结构数组,哈希表是用得最多的。后面可以再回头来了解泛型、注解、并发这些知识。对于图形化Swing、SWT不需要去看。在这期间推荐一些书籍《Head First Java》(给完全0基础的,没有学过任何编程语言的),《Thiking in Java》(这本书给有基础的看吧),后面更高级的就看《Effective Java》,还有了解一些常见的设计模式,数据结构。有些人喜欢看视频,对于视频来说入门还可以,但是后面更高级的技巧还是得看书,而且很多最新的知识往往只有文档,官网。所以能看书尽量看书吧。
2、关于Android入门
终于到正题了,对于新手来说Android的入门资料其实网上也有一堆,但是质量参差不齐,选对好的入门资料可以让你少走很多弯路,相反如果选了一些质量差的资料甚至会误导你,磨灭你的兴趣和热情。所以我在这里主要想分享一些我个人认为比较好的入门资料和一些学习方法吧。如果是之前没有什么项目经验的话,可以先看郭霖的《第一行代码》,这本算是国内入门书籍比较不错的,可以让你对Android的整体有个大概了解,书的内容不多,对那些想快点动手实践做点小东西的人不错。如果想更全面的入门的话可以接着看《Android编程权威指南》国外的一本教程,虽然书中将的是SDK比较早的版本,大概是4.x的,但是核心的概念都基本有了,而且是通过实际几个小项目来讲解的。书中里面的主要有两个重点项目,一个是类似记录办公室不文明行为的应用,介绍了Activity,Fragment,Intent等知识。第二个项目是一个照片墙app,主要涉及到更高级一点技巧图片,网络请求,xml解析等,也是十分有用的。基本弄熟了这两个项目就可以去找工作了。
3、Android开发进一步学习
当然,在实际的公司中的项目不会像书中的那么简单。但是这个时候对于新人来说可以先从网上找到许多解决方案。很多牛人写的许多开源库就可以拿来用了,没必要重复造轮子,而且就算自己造还没人家的好用。所以这个时候就可以多逛逛GitHub,一些牛人的博客,官方文档,安卓开发社区等。下面推荐几个好的资源链接:
- http://www.androiddevtools.cn/ Android开发工具下载网站
- http://blog.csdn.net/vipzjyno1/article/details/23542617 Android开发规范
- http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/ Android达人stormzhang的入门经验
- http://mmclub.github.io/blog/2014/04/03/start-learning-android/ 另一个达人的入门经验
- http://www.jianshu.com/p/874ff12a4c01 还是入门经验,可以多看看,少走弯路
- https://github.com/Trinea/android-open-project 国人收集的许多好用的开源工具,基本涵盖了Android开发的“轮子”。
- https://github.com/wasabeef/awesome-android-ui 许多不错的UI控件
- https://github.com/futurice/android-best-practices/blob/master/translations/Chinese/README.cn.md 讲实际开发的一些规范和注意点
- https://github.com/FX-Max/Point-of-Android 涉及到Android一些机制原理
大概就这么几个,还有最主要的一些开发社区GitHub就不用说了,国内的话可以看看稀土掘金不错,有空的也可以逛逛知乎上的Android内容。
4、关于Android开发进阶
在这个阶段就需要开始了解Android一些机制后面的原理了,为什么它要这么设计。还有可以关注一些Android最新的最流行的技术,可以对app开发进行优化,从架构的角度上来思考。这个时候最好的学习方法当然是去阅读源码,通过源码了解Android应用层背后的东西,比如:
- View视图绘制过程,如果网上没有合适的UI组件,可以用来自定义一些视图。
- 事件分发机制,可以解决实际项目中遇到的一些例如滑动冲突的bug。
- 消息处理机制,了解handler,message,queue的工作原理。
- 异步任务AsyncTask机制(不过现在最流行的可以用RxJava,RxAndroid来替代)。
- Binder机制,了解Android如何实现IPC原理
- 了解Activity,Fragment,Service生命周期原理,组件通信Intent等
- 对于UI,可能要考虑到屏幕适配的问题,主要其实就两点,一个是使用Fragment,一个是资源文件管理。
- 还有一些网络请求,图片处理,数据库等最好是去看一下那些优秀的开源框架的源码
书籍的话国内有一本《Android开发艺术探索》,网上评价不错,我自己还没看过。
5、给个学习路线图,有目标学习起来也比较明确


主要也就这些,后面有新的东西会继续更新...加油吧,少年!我们要相信前途是光明的~~
Android入门教程之我见的更多相关文章
- Android入门教程(二)
Hello World 项目 首先当我们启动Android Studio的虚拟机时,可以看到第一个项目Hello World,那么虚拟机中的Hello World!是如何书写的呢? 看看虚拟机运行结果 ...
- Android入门教程(四)
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 学习Android要掌握Android程序结构,和通信技术,和如 ...
- linux.linuxidc.com - /2011年资料/Android入门教程/
本文转自 http://itindex.net/detail/15843-linux.linuxidc.com-%E8%B5%84%E6%96%99-android Shared by Yuan 用户 ...
- Android入门教程(一)
Android是什么? Android是基于Linux开发性内核的操作系统,该平台由操作系统,中间件,用户界面和应用软件组成.Android的基本信息:软件类型,APK,发行商:Google,最早版本 ...
- Android入门教程(八)
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 今天讲讲安卓入门(八),讲讲Android的简介,如何搭建An ...
- Android入门教程(三)
对Android五大布局的描述,分别是 FrameLayout (框架布局),LinearLayout (线性布局),AbsoluteLayout (绝对布局),RelativeLayout (相对布 ...
- Android入门教程(五)
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 欢迎大家关注我的微信公众号:「醉翁猫咪」 字面量: 1.整数字面量为整型(int) 2.小数字面量为双精度浮点型(double) ...
- (译)cocos2d-x跨android&ios平台开发入门教程
免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...
- Android渗透测试Android渗透测试入门教程大学霸
Android渗透测试Android渗透测试入门教程大学霸 第1章 Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...
随机推荐
- android 程序打开第三方程序
因为在开发过程中需要开启扫描第三方程序,并且点击启动的效果,所以对这个功能进行了实现,并且分享出来个大家. 之前看到网上说需要获取包名和类名,然后通过 intent 才能打开这个程序,其实不必要这样 ...
- 插件化技术在安卓sdk开发中实际应用
笔者从 2016 年初就因为公司业务需求转战 android sdk 开发, 应用插件化技术将公司 android sdk 重新翻版.先来说说需求. 由于笔者所在一家创业公司, android sdk ...
- c语言冒泡排序,指针,数组
冒泡排序算法的运作如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复 ...
- HDU-1034(简单模拟)
Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 学习笔记_Java_day13_JSTL_自定义标签库(9)
自定义标签 1 自定义标签概述 1.1 自定义标签的步骤 其实我们在JSP页面中使用标签就等于调用某个对象的某个方法一样,例如:<c:if test=””>,这就是在调用对象的方法一样.自 ...
- flexpaper 开源轻量级的在浏览器上显示各种文档的组件
FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与PDF2SWF一起使用, 使在Flex中显示PDF成为可能,而这个过程并无需PDF软件环境的支持.它可以被当做Flex的库 ...
- SQL Server系统表sysobjects介绍与使用(转)
SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可 ...
- 坑爹CF April Fools Day Contest题解
H - A + B Strikes Back A + B is often used as an example of the easiest problem possible to show som ...
- Android清空画布
public void clear() { Paint paint = new Paint(); paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR ...
- vim plugin 原理
vim 个性化设置与功能扩展均通过 script 来实现,这种 script 又叫 plugin.plugin 是 vim 的核心与精髓. 最常用的配置文件 vimrc,也是一种 plugin.换句话 ...