打算去学习安卓开发培训班,不知道好不好学?对于0基础的会不会很累?

如何通过自学成为一名安卓软件开发工程师?
通过自学,如何成为一名安卓软件开发工程师?需要读哪些书?
按投票排序
我正在自学Android开发,已经有半年时间了,基本上业余时间可以挤出来的,都拿来学习了由于还没有找到Android开发的工作,先占个坑,不敢擅自回答,以免误导,等找到工作了,再详细描述着一路过来的自学经历。PS:本人之前没有任何软件开发经验。**********************update:经过了八个月的自己,终于在上周五被一家公司录用了,现在遵守诺言,说说这段时间的自学经历。背景介绍:性别:男、无任何编程经验、年龄:28(大龄青年了)、学习方式:工作业余时间自学。第一阶段:学习Java
用时:一个半月一开始我使用的是Princeton大学的线上资源学习:,学习完后,觉得自己掌握的不够系统,于是找到了另外一本教程:Introduction to Java Programming, Eighth Edition,继续学习,该教程学到第30章,没有继续学习下去是因为后面的越来越难懂了,于是就学到这里,等学习Android开发的时候,有需要的,再回国头来学习。Java阶段学习的主要方式是一边学习,一边用Eclipse模拟练习,该阶段的学习持续一个半月。第二阶段:初步熟悉Android开发
用时:两个月???内容较多,稍后更新************************************不好意思,耽搁了这么久,现继续更新第二阶段:入门Android
用时:两个月(业余时间学习计算)在入门Android的时候,听从了网上一些人的发言,首先选择了google官方的文档,里面有一个trainging的资料,发现这个资料学习起来生恢难懂,而且讲得不够详细,跟着做项目也是困难重重,很不适合初学者,不建议,我也是在学习了一周后,果断放弃;然后选择了上面的Android学习资料,找到一本排名第一的,叫做Android Programming:The Big Nerd Ranch Guide,跟着一起学,由于学的有点急躁,大概花了一个月多,感觉效果是有,但是不是很好,然后在知乎上看到有人推荐TeamTreeHouse,试用了一下,感觉很好,于是注册了会员,开始学习,这个阶段的学习持续了两个月,感觉效果很明显,而且视频的里面,都把资料讲的浅显易懂,看了以后,兴趣大增,很建议选择这个作为入门的学习资源第三阶段:深入学习其实学完第二阶段,我就已经开始慢慢的投简历了,但是都没有任何回应,于是有开始了新的阶段的学习,这个时候,我选择了Udacity,里面的一个Android的学习课程,虽然说也是基础的 课程,但是讲的比TeamTreeHouse的深入许多,而且更加的贴近实际工作情况,不过讲的没有前者详细,所以在学习过程中,需要自己翻阅资料,整个过程也是持续了一个月多,我现在的这份工作,就是在这课程学完不久后找到了后记:其实通过自学,想达到用人单位的要求,其实是相当困难的,我学了快八个月了,投出去的简历,也几乎是渺无音讯,期间的打击是肯定有的,不过还好坚持了下来,我的建议是,如果选择了这条路,就一定要有足够的毅力,并且能够在简历、面试被拒绝后,心无旁骛的继续学习,直到达到目的为止,而且这个阶段没有一个固定的时间,如果不是我现在的主管看中我的一些其他品质(不是我的Android开发实力),我也不会被录用,可能还要继续的学习几个月,所以自学这条路只属于肯坚持下来的人,祝好!后后记;现在在新的公司上班,由于我也只是刚入职不久,也有许多没有上手了,做起来也没有之前想象的简单,毕竟是工作了,也容不得疏忽,于是压力也大了起来,不过毕竟现在做的是自己喜欢的工作,感觉之前的付出,值得,我希望后续想自学的人,一起努力吧。***********************update:现在上班已经有快两个月了,做个更新吧刚找到工作那家公司,是一家创业公司,我进去的时候,公司正在转型,Android开发的工作很少,我就去基本都是在看别人现成的代码,呆了一个月之后,公司突然辞退了两个Android开发的,包括我,理由是公司决定转型做平台,暂时不做Android客户端,下午四点通知,六点就走人,当时确实有点彷徨,也有点担心。回到家马不停蹄的投简历,把自己的工作经历写成了半年(实际只有一个月),四天后获得了一个面试,是一家做Android定制的,在面试的时候,我夸大了自己的开发实力,由于我渴望通过工作来增加阅历,于是进来了。新的工作开始后,让我庆幸的是,之前吹的牛皮,基本上在努力后,也基本实现了,公司需要完成的项目,也都可以按时完成,现在的进度差不多是一周的时间,就可以初步开发出一款电商类的APP,由于公司自有我一个Android开发的,不知道这种进步算什么水平。总之,很庆幸的是,很多知识都可以通过自学掌握,那些不会实现的功能,也可以通过摸索而实现,也让我信心更坚定了点,真的非常感谢前人在网上发布的博客内容,给予我的帮助真是太大了,同时我也开始自己写博客了,把工作中有价值的问题和解决方法记录下来,希望对别人有些许帮助。打算这一两天申请转正,心里还是有点忐忑啊,太盼望这一天了!!!*********************update: 这次更新的主要理由是公司终于同意我的转正了,只是工资没有预想的多,只涨了八百,现在已经基本上手了,碰到的问题很多也是都可以独立解决,而且还能抽出空余的时间,学点新的东西,这次的转正对我本人来说,意义非凡,至少证明了,我这么久的努力还是值得的,而且现在可以靠着这份手艺挣到钱,而且这份工作是我确实喜欢的。接来下我计划会是继续的加强自身的开发实力,多阅读 牛人的博客和代码,真的收货非常大,而且知道的多了,也比较清楚自己的接来下要努力的方向,所以我会朝着这些方向去努力,不过会没以前那么拼命了,之前只顾着转职,陪家人老婆的时间少了许多,现在稍微稳定点了,我想慢慢的补回来,不知学习不会放下的争取在三个月左右,再涨一次工资吧,在这里立下证据,待日后核验。******************************updata:最近的工作由于比较大的变动,于是在这里记录下首先,公司说的涨薪的八百,实际到了第二个发工资的时候,发现其实只涨了四百,期间说了各种理由,总之是这是一家不靠谱的公司,不靠谱的老板工作方面,我自己独立完成了一款APP的开发,从零开始,一直开发到上线推广,中间也碰到了种种的问题,在努力下也都一一解决了,这个是我在这家公司最大的收货,第一个项目结束后,开始试着投简历,无意中找到了一家新的公司新的公司经历了三轮面试,第一轮是人事的,我把我的工作经验说成了八个月(实际四个月),然后是项目总监,最后是老板,整个面试过程很顺利,由于公司没有安卓的开发人员,所以我那些技术上的吹嘘也都一一瞒过去了,最终被录用了,新的公司,待遇比之前的高了一千,上班时间也改成了五天7.5小时,老板跟公司的环境跟上家比,都好了许多,工作也基本上可以胜任,好歹也是有点真本事,不是完全的吹嘘,最后,总结下对个人比较有帮助的部分:1、写博客:写博客不仅可以激励自己学习新的东西,而且以后碰到类似的问题,直接从博客中copy代码,简单省事;2、把代码中重复的模块写成一个工具类,下次调用直接简单的一行代码就可以实现了,比如emptyView, viewPageIndicator。3、从github上照搬代码的时候,记得读懂里面的代码,真的帮助很大,那些大神的代码真的写的太好了,每次读完都很有收获。4、工作中碰到不懂的,切勿马上搜索答案,先查看官方api接口,寻找思路,最后再用搜索引擎暂时就这些了,其实我还只能是入门级别的,能有更深入一级的体会的时候,再来记录下。。***************************update:刚好现在有空,继续更新下吧目前的这家公司各方面感觉都还可以,虽然目前是我一个人独立负责Android的开发,基本上是上手的,在技术上是没有碰到什么解决不了的问题,碰到很多不懂的内容,在Google搜索后,基本都找到答案了,或者寻找相关的源码去了解下,也都可以一一的解决,这几个月,可以感觉到自己在技术上又有了不错的提升,现总结如下,希望有所参考;1、尽早从Eclipse迁移到Android studio。虽然去年就开始接触studio了,当也是懵懵懂懂,今年随着1.0正式版本的发布,心里就痒痒的,想迁到studio上面来,由于对Gradle的不熟悉,还有配置等各种原因,一直没有迁移,不过也有陆陆续续的练习使用,在基本熟悉了,就开始迁移目前的工作项目了,迁过来了以后,就再也回不去了,Android studio真的比Eclipse好用太多了,你越熟练使用它,它就越好用,特别是github上面很多项目都是基于Gradle的,集成到studio中很方便,总之,强烈建议迁到studio开发平台上来。2、学习使用Git。公司用的版本工具是SVN,我估计很多公司都是用这个,我试了在studio上面集成SVN,可是试了很多次都失败了,又听说git很先进,狠下心来学习了git,在Udacity上面有个Google开发的Git学习课程,免费的,粗略掌握后,就开始摸索在studio上面使用git,发现studio对git的集成太好了,虽然网上这方面的资料很少,但是基本上摸索了些就学会了,基本所有的git操作都可以在studio上进行,不用使用Git原生的命令,方便异常,另外在配合Bitbucket,简直太好了,用Android studio + Git + Bitbucket,可以天下无敌了啊,哈哈!3、代码方便维护和复用。在实际的开发过程中,发现很多方法都是相同的,特别是网络访问这块,对于相同的方法,尽量写在一个公用的BaseFragment或者BaseActivity中,这样在后期,如果接口有改动的话,不需要每个页面都改动,只要改动通用的方法就可以了,还有在每个页面的代码结构要足够清晰,多谢方法,不要很多代码写成一坨,这样后期不好维护,会看的晕头转向的。4、使用leakcanary。内存控制是我的薄弱环节,刚好最近Square出了这款工具,可以很方便的检测内存泄露,我在我的项目中一试,真的发现了好多问题,也发现了很多容易造成泄露的书写习惯,嫉妒推荐使用。5、使用AppCompatActivity。如果你的项目还在开发的话,不要用FragmentActivity了,用这个新出的,也是官方推荐使用的,可以很好的兼容5.0以上的系统,另外用了也可以让各种系统的控件Style保存一致,各种好处说不尽,用了就知道了6、BugHD,检测崩溃。并不是每次崩溃都可以被你采集到,这个工具可以采集到你开发的APP的所有的崩溃,免费试用的,关键是集成很方便,我一直在用现在基本上算是入行了,想想之前刚开始投简历的时候,发了一百多封简历,接不到一个面试电话的情况,难免有点唏嘘,虽然上手工作暂时没什么问题了,但是想要进一步的深入,还是有许多的路要走,还是继续努力吧下一步的方向应该是放在进一步研究各种api和效果实现上面,最近发现研究官方的源码,收获很大,官方的代码写的真的是太精辟,太有逻辑性了,很好的学习教材。*************************update:最近工作又有一些变动,在这里做个分享吧原有的公司,因为项目的原因,我已经空闲的快一个月了,预期接下来的几个月都没有什么开发需求,根据我这段时间的表现,公司还是希望我一直留下来的,万一有新的项目,就不用再折腾的招人了,不过空闲对于我自己是莫大的时间浪费,于是就试着看看有没有其他合适的机会,总之,挺顺利了,就找了份不错的新工作。好了,下面分享一些最近新的感悟1、 找工作的选择,我之前都是选择创业公司,很大的一部分原因是因为我的工作经验,很难进入一个大的公司,不过创业公司的失败风险真的很大,特别是那些没有天使轮的,真的很容易死亡,当然项目都的死亡,损失最大的应该是老板,不过对于我们做开发的,也因为的开发的产品没有得到市场的考验,你也不知道你开发的APP到底好不好,有没有什么问题,机型的匹配怎样。说了这么多,个人的经验是工作的选择,还是尽量选择一个靠谱的工作,有更大的用户去使用你开发的APP,这样对你的成长才是真的巨大的。2、 做开发的时候,不仅仅是实现功能,还有代码的优化,结构布局,真的很重要,我这几天看了下Picasso的源码,发现自己的代码真的写的太烂的,一看就是质量不够好的,所以尽量多看一些大神写的代码,了解他的布局和思想,然后再拿来改进自己的代码3、 开发中碰到了问题,记得自己先去思考下解决方案,或者网上Google,不要马上就到群里面去问,我最近退出了很多技术交流群,因为有很多自己都没怎么思考的问题,就抛到群里面来,其实我们做开发的,我觉得解决问题的能力比开发的技术还跟重要,等你熟练自己解决问题了,就会发现其实需要去求教别人的地方是很少的最近接触的多了,就越发现自己不懂的也多了,之前说算是入行了,现在想起来,其实还只能算是入门,如果你也是走写代码这条路,就一起猛干吧,阿门。。。。***********************************************update:最近触动比较多,还是继续更新下吧到了新公司,完整了参加完一个项目下来,感觉自己收获最大的不是技术方面的成长,而是态度方面的成长,良好的态度能够规避很多技术的问题的,刚好有时间,粗略写个总结吧;1、确认好产品文档的技术细节:千万千万要跟产品确认好需求,产品的需求文档会包含交互细节,页面逻辑等,但往往会忽略技术的实现细节,或者在实现起来,有很多的细节需要考虑的,但是都是文档说欠缺考虑的,一般的情况下,一份新的需求,我大概要花费一天的时间,去完整的评估实现方案,在评估完成后,发现有出入的,还需要跟产品重新沟通确认,确认好后,千万要记得让产品更新文档,以后测试好依据新的文档测试。2、在实现一个功能之前,先打好草稿:我做项目经常犯的一个错误是急着写代码,逻辑跟着代码一边写一边走,现在回过头去查看原来写的代码,发现结构混乱,方法各种重复,逻辑耦合度高,总之就是烂,最近静下心来,在完善一个功能之前,先用纸跟笔把各种情景考虑清楚,再把各种逻辑交互处理好,并且用流程图之类的方法表达清楚,然后再开始写代码,这样写的代码明显质量高很多,bug也少,由于逻辑结构清晰,后期的维护跟更新都比较简单。3、加强自测:不知道是不是开发的普遍不喜欢测试,我好一阵都是对测试不感兴趣,提不起劲,感觉没有技术含量,直到提交的代码一次次被测试妹子提的bug给淹没,脆弱的心灵深受打击,于是只好痛定思痛,要加强自测,一般自己写的模块,自己是最清楚的,知道哪些地方容易出bug,基本功能测试一遍,再极端条件再测试一轮,基本没有空手而归的,每次都能发现代码中的bug,不知道有没有那种神一般的程序员,有一双上帝之手,写的代码蹭蹭的出来,而且基本不出bug,我这辈子是没可能到达这种境界了,所以只好老老实实的自测吧。4、分支管理:现在应该一般用git了吧,建议是开一个主分支,这个分支打的包也是测试用的包,然后自己再个分支,在上面开发测试,如果有其他的队友,也各自开分支,新的功能开发自测合格后,再合并到主分支,这样比直接在主分支开发,能够规避许多的bug,说起来简单,我也是一开始忽略了,只好看着满满几十页的bug心里发抖。5、小白心态:一直觉得自己是个小白,对于写的功能,某个方法总是抱着怀疑的态度,对于我来说,抱着小白心态,或者菜鸟心态写代码,明显质量好很多,但是进度慢了不少,如果抱着信心满满的心态写代码,速度明显飙升,但是对于我来说,bug反而会变多,所以我一般尽量让自己保持菜鸟的心态写代码(代码深似海,其实真只能算新手,每次看到Android的源码,都深深的感觉自己跟高手的差距达到估计这辈子不知道可否追的上)对于外行入门Android开发的,尽量去大一点的公司,你的成长会比小公司的大很多,我前几份工作都是小公司,目前这个家公司规模还不错,工作了几个月,就能明显的感觉到之前成长的局限性了
~日更新~今天我正式填坑~~这个坑被 N 多人吐槽了,也确实有段时间,期间尝试过不少能帮助小白入门的方法,也有所收获,后面我会一并更新到答案中~泻药~ 第一次认真回答问题,有人给点鲜花鼓励什么的没~~-----------------------------我是正式开始的分割线------------------------------------这个问题其实需要展开来说下~学习新技术都很多人来说本身就是一件比较痛苦的事情(因为学习会改变自己原有的认知,是个自我更新的过程)~所以能不能学会学好的前提条件是你是不真真愿意去学,你想学adnroid的根本出发点是什么,这个出发点是否强大到让自己完成这个学习。如果上面两点你已经认识到了,那接下来我们再来看如何自学成为一名android开发工程师~优秀的android开发工程师和普通的差别很大,而根据题主的描述,我们这里就说如何成为一名合格的android工程师(也就是入android开发的门)。学习需要静心,特别是入门的时候需要静心,我不觉得看英文的google android官方文档()或者[eoe社区组织翻译的中文文档]()想快速入门是件容易的事情;也不觉得找一些免费的视频看下去能快速的入门。因为这些东西都是入门后才合适看的。说到入门,那我要推荐一下自己策划和参与撰写的《Android开发入门于实战》这本书籍了(本书第一版是笔者参与撰写的中国大陆第一本android开发教程,现在市面上是我们刚刚撰写完成的最新的(也就是第二版),官方介绍如下《Google Android开发入门与实战》是中国大陆第一本Android开发教程。此书第一版由eoe的创始人姚尚朗和靳岩于2008年底所写,第二版由eoe众多实力派社区版主于2013年共同协作改版。此书目前已经重印超过18版本,已经是Android开发者是受欢迎的Android开发图书之一;是Android开发者学习人手一本的必备红宝书。在这里解决大家阅读过程中遇到的所有问题,勘误收集,源码下载,讨论交流,作者答疑,反馈建议等等内容均可发布,希望eoe社区这本书能成为Android入门经典标准教材,让更多人学会android开发。封面如下BTW:BTW:详细的目录在这里:紧接着,我来说说入门的步调:我个人建议的入门途径是这样的:1.第一阶段:认知上入门买一本纸质的android入门书籍,一定是入门的,比如我参与策划和编写的[Android开发入门和实战](),给自己1周完整的时间按照里面的阅读建议阅读完,第一遍不需要完全读懂,特别是代码的地方,但是你需要尽量的尝试看懂(这个阶段不需要开电脑查资料,因为电脑上诱惑太多了,你的注意力会被其他干扰的)。读完这本书后,你基本上就从认知上入门了;2.第二阶段:知识上入门认知入门后其实就比较简单了,拿过上面那本书,从环境搭建开始,到第一个例子,到书中其他的演示的例子都自己尝试跑一遍,遇到错误自己尝试解决,如果超过20分钟没解决掉,记得去这个社区问,作者会第一时间帮助你的。跑完例子基本上就有对 android 有个大体上的入门了~3.第三阶段:实战上入门有了基础认知吼,就进入到真正的 android 工程师成长轨迹中了,这个时候信息和知识就不是主要的了,这个阶段主要的按照知识点的形式来强化和实战,目的是持续学习在工作中会用到的各种技能~ 这个阶段的知识点很多,很多情况下一些人会抓不住重点,把时间花在一些另外20%的技术上去,所以按照我对 android 技术的理解和经验,推荐试试我们新发布的新产品《》,『极客学院』是我们最新的一个收费产品(真的超值,30元/月的价格可以学习里面全部的课程,android 为主,还有 cocos2d 和 c 等课程),按知识点形式对真正有用的技术进行讲解;此外,务必去『』注册一个帐号,遇到问题自己搞不定的时候去和大家讨论讨论~4.第四阶段:开发者圈子上入门前面说的很多都是自己一个人在战斗,要想更好的进入这个行业,需要有自己的开发者圈子,前面好像有同学也提到了诸如 GDG之类的活动,恩,就是这样的活动。我这里说的是 还是 eoe社区的活动(没办法,这样的活动就是我觉得开发者活动应该是这样的),我们有两类活动,一类是基于城市的『eoe 同城会』,现在在上海,北京,深圳等14个城市都有本地的组委和志愿者,会定期活动分享,例如『』,此外还有一类是诸如 eoe 每年一届的移动开发者大会。BTW:活动不要跑多了,特别是线下活动,别没事就跑去参加什么活动,挺浪费时间的~好了,坑填完了,心安一点了,有需要更多信息的给我私信吧(我争取能及时给大家回复~)~--------------我是一个很极客的分割线-------------------接下来我再给大家推荐几个『极客学院』里对这个问题可能有用的课程1小时,独立开发第一个“Hello World”4个实战项目,教你7天学会Android通过对现代网络安全的基础理论的学习,掌握和理解其核心原理。此外,还有诸如『』还有很多不错的课程,我们也在每天不断添加新的课程,我个人觉得是每个学习 android 的人必备的,超值的很~~
大家讲了论坛和知识区,我补充融入程序员圈子的部分吧。有圈子,有人有朋友,更能坚持学下去。可以去github上面找开源项目自己编译运行,并且改编成其他版本。多参加线下活动,很多免费活动的。本题里面所有图片,都是我自己拍的,或者我电脑屏幕截图。这是今晚我参加线下活动,零基础学ios开发(免费活动我说了咩?)最后真的做了一个简单iphone app出来,虽然超简单,只有一个动作。我个人最最推荐当然是GDG(Google Dev Group)所有活动。大牛非常多,活动全部免费,而且都是编程相关。加入G+圈子和邮件组后,里面全是工程师,新人到大牛都有,而且都非常乐于分享。各种国外新技术,新教程,新XXXX,第一时间都有人讨论。补充刚刚好一年前,在上海时候,GDG组织活动,也是零基础学Android开发,当时做出一个APP可惜我一直没坚持,所有软件都半途而废。认真想学,很容易加入圈子的。另外硬件相关的,另外硬件相关的, 我参加过他们线下活动,免费,教你单片机开发,很好玩。上海有新车间:看老外编程也很有趣,他超短时间开发一个社交APP,从零开始写代码,全程英文。看老外编程也很有趣,他超短时间开发一个社交APP,从零开始写代码,全程英文。这个活动是barcamp ,免费,全天,并且提供午餐。对了,我前面提到GDG大部分活动有吃有喝咩?最后贴今晚的图,免费,从零开始学ios开发,成果见最上方:最后贴今晚的图,免费,从零开始学ios开发,成果见最上方:(车库咖啡也有很多不错活动嗯嗯)对了,我有提到GDG全国都有组织咩?我个人觉得质量不错线下活动是:上海,北京GDG组织线下活动。北京Barcamp 且都是免费。创业聚会一般不错:北京创业影院,车库咖啡,3W咖啡,上海创智天地等等。线上不错的网站有: (这个我比较喜欢) ( 目前我最喜欢的,用这个学Android来着 )最后放北京GDG活动(真的是免费的,还有茶歇和零食)这是在某个酒店,后一张是创业咖啡店。以上。祝好。以上。祝好。——————补充的分割线——————说了是GDG,加入GDG有各种讨论~~ 再三提到我个人最推荐的是GDG组织。我从邮箱截图吧,上海GDG和北京GDG我都有参加。这些是Gmail邮件列表,线上和线下活动都有,够不够干货?
我自学java和android一年多,现在是一名android工程师。总一下自己的经验,希望对你有帮助。首先我想说的是入门android一定要有java基础。我自学android的时候由于java的基础不是很好,甚至连java的基本语法和对常用类用发都很模糊,导致后面学android的时候学了一个月还是不清不楚,信心大减很受打击,无奈还是重新学一遍java再来学android,发现学习android好理解很多,所以一定要先把java的基础学扎实!然后,android跟xml的联系还是挺多的,资源文件都用到xml,所以多多少少理解一下xml的结构,基本语法对自学android也是很有帮助的。准备好学习android的基础之后,正式学习android。如果是零基础,我个人觉得最好的学习方法是以看视频教程为主(网上可以搜到很多免费的android视频教程),辅以一两本android基础的书。入门android,最大的阻力莫过于如何自己创建一个android项目进行开发,包括了解android项目的结构组成、使用什么开发工具以及基本开发步骤。很多关于android入门的书一开始一边都是讲一些关于android系统的发展过程等等这些介绍性的东西,然后在讲讲android开发的重点是什么四大组件。大多数人一般看看都能接受这些东西,但是大多数人都挂在了接下来真正学习android的环节,也就是如何自己创建一个android项目进行开发。
绝大部分人说官方文档和范例()是最好的教程,如果你英语好,且有Java和XML基础,那按照官方的一路下来就算入门了。如果英语不好,可以看一些视频入门,如Mars的的。最起码得先把开发平台搭建起来吧。再结合视频做一些小练习,最基础的布局先练好,不要急。当然,看视频的话虽然通俗易懂,但是进度可能比较慢(即使我视频调至2倍速看),所以必须结合看书。但是,市面上的书大部分都跟不上Android最新的脚步。不过还是推荐两本:李刚的《》,此书大而全。《》,此书可以照着练(不要ctrlc+ctrlv)。对了,现在还有更新颖的学习方式,可以在线互动编程学习(),你可以尝试一下。总体来说,书都比较落后,Android学习主要还是靠网络。入门是最关键的,入门之后相信你自己也会找资源了。然后可以启动以项目为导向的学习方式,用到什么学什么,这样最快。但是,快并不是浮躁,别想一口气吃成胖子。况且,一入IT深似海。。。不扯淡了-_-。其他参考:StackOverFlow的Android Tag()GitHub搜Android()Google Code上的优秀APP源码()直接拿来用的Android开源代码()Android设计指南非官方简体中文版()Android开发者社区()CSDN上的优秀博客和牛人(),比如这位我现在也在慢慢学习和摸索中,望共同进步。
我也是通过自学走向Android开发的,我来回答下。 1.要对移动开发有热情,而不仅仅是为了找份工作。有热情才能保证持续的学习和在实际编码中的精益求精,不然在编程的道路上走不长。 2.Android应用层开发是用的Java语言,所以熟悉Java语言是必须的。如果以前没编程基础,推荐毕向东老师的Java视频。如果有编程基础,推荐李刚的《疯狂Java讲义》。国外的《Java编程思想》不适合初学者,《Java核心讲义》翻译不太好,不推荐。 3,掌握Android基础知识,推荐郭霖的《第一行代码》,相信我,这是最适合入门的Android书籍。 4,掌握Android进阶知识,推荐郭霖的CSDN博客,主要看关于View的绘制流程、Touch事件分发、Handle机制等。 5,熟悉常用的设计模式,先开始熟悉几个很常用的就够了,比如单例,观察者等等。学到这,Android应用开发基本入门了,学习曲线也不是很陡,加油↖(^ω^)↗。
android,需要这些技能基础。①Java基础知识 ②Linux基础知识 ③数据库基础知识 ④网络协议 ⑤Android基础知识 ⑥服务器端开发知识①Java基础知识安卓学习视频的话老罗的视频还是不错的我当初是报的培训学校学的,都是学校老师讲的,课下有时候听一些视频课程,最多的还是自己敲代码,多看官方文档,多敲代码,那段时间天天除了上课就是敲代码,改bug。推荐几个不错的学习网站,可以自己学习下。csdn它是集新闻、论坛、群组、Blog、文档、下载、读书、Tag、网摘、搜索、.NET、Java、游戏、视频、人才、外包、第二书店、《程序员》等多种项目于一体的大型综合性IT门户网站,源码只是其中的一项,但是很实用 里边有很多大牛。DevStore是一个开发者服务整合类平台,目前DevStore已汇集国内外500余款开发者服务,每个服务都有相对应的服务评测报告。开发者可以在这里提交服务、下载源码、评测、对服务进行对比并进行评论等等。交流群: 这里汇集了一大批高质量的开发者和高级评测人员。开源中国是目前国内最大的开源技术社区,由开源软件库、代码分享、资讯、翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。为开发者提供丰富多样的软件下载,源码托管等功能。自学的话平时就多看一些官方文档,帮助文档也是一个很好的参考资料,多看看,平时多敲代码,多看看注释多看规范,看完之后去敲代码主要是在实践过程中发现错误,多做项目自然多遇见问题,遇见问题解决问题,下次自然就知道怎么解决,在实践中发现真理。当然可以的话有一个老师还是很好的,但是要记得要是的作用只是引导,师傅领进门修行在个人。
找本java书老老实实刷,书是没几本像样的少掺和什么线下聚会,浪费时间
首先来说下我的背景以及这大半年来我的自学情况吧:
1.本科通信工程,非计算机科班,大一学过C语言基础,后来因为专业课程需要,学了一点汇编以及Matlab。这部分经历我认为对于我后来的编程学习只有基础语法理解方面的帮助。
2.去年11月中开始系统学习编程语言,由于想做Android开发,所以入门语言选择了Java。
3.11月中到12月中,边看传智播客的一套视频边敲里面的练习。
4.12月中到1月中,20天左右时间看了《编程之美》,并用Java实现书里百分之五十左右的算法题,剩下的题由于难度太大
或者比较复杂,当时没有深入研究下去。
5.1月中到2月中,选择了网易公开课里面的《斯坦福大学公开课—编程方法学》这套视频,同样是边看视频,边完成里面的Assignment。在这里感谢帅帅同学@王帅 推荐这套视频。里面的Assignment题都是经典题目,对于初学者来说非常适合。
6.2月底开始学习Android语言,花了1个月左右的时间,照着《第一行代码》里面的例子,敲代码进行实现。
--------------------------------------------
由于在学习编程之前就有两个小产品的构思,所以也没有想自己基础是否打扎实了,先试着去实现,看看能不能做出个可用的产品来。截止到目前为止,两个小产品都已经开发完毕了,其中一个“苹果序列号查询”已经在小米、豌豆荚、Google Play、魅族Flyme等应用市场上线并且有了一版更新(4月14日上线,到目前为止下载量已经超过1000),它是下面这个样子的:
关于开发“苹果序列号查询”具体实现逻辑介绍,请移步(最近好像需要翻墙):另一个是我的个人简历应用,仿照地图搜索的样式做的,它是下面这个样子的:
关于开发“JeffinBaoCV”这个个人简历应用的介绍,也请移步:-----------------------------------------
很多知友在其他答案中已经列了很多资料了,我自己也是通过他们介绍的资料的其中一部分来进行学习的,所以资料方面,就不多说了,想说两点看似无关但我认为又比较重要的点:
1.有自己很强烈想要实现出来的想法我在学习编程之前,上面两个应用的初步构想就已经在我脑中了,所以这半年多特别是今年2月底开始学习Android以来,我都是按照怎么去实现我脑中的想法去学习Android的。没有对于想要实现的东西有着强烈的愿望,我想我是很难坚持下来的。最终把自己的想法实现后,这种开心和一直进步的感觉,也是很鼓舞人心的。
2.“软实力”的加强Android应用呈现给用户最多的是界面,所以界面是否美观是用户会不会选择去用的一个重要因素。对于工程师来说,如何提高自己的审美,进而把自己对美的理解融入到应用当中是很重要的。这不是说工程师一定要具备专业设计师的能力,这不太现实。但是如何保持界面整洁,在字体、颜色、排版上如何规范与统一,都是工程师需要在平时去提高的。
---------------------------------------------
写了这么多,不知道有没有帮助到题主,下面我也想安利下自己的应用以及在求职中的自己:
1.小米、豌豆荚、魅族Flyme、Google Play、锤子应用商店上搜索“苹果序列号查询”,有任何问题,欢迎反馈给我丫。
2.第二个应用做的是个人简历—JeffinBaoCV,没有上线,感兴趣的朋友可以通过下面链接下载(由于身边手机不多,可能在小屏幕低版本系统的手机上会有适配问题,如果有,也欢迎反馈给我丫,多谢):.(提取码:9x6d)
3.下面是跟我有关一些主页的链接:
豆瓣主页:
主要用于记录自己读过的书和看过的电影,偶尔看看书评和影评,再偶尔写写书评并记录自己生活中的一些想法
微博主页:
主要用于关注一些自己欣赏的人的动态,看到那么多比自己厉害的人都有自己喜欢的事情去做,也不断激励我去做自己喜欢的事情
个人主页:
主要用于写技术文章和一些自己认为写得比较好的文章,刚开始用jekyll引擎不久,所以内容比较少。
GitHub主页:
主要用于托管自己的代码,寻找一些好的开源项目来学习使用。
如果你对我感兴趣,请私信我或者通过下面邮箱联系我吧,谢谢!
title: Android学习路线总结,绝对干货tags: Android学习路线,Android学习资料,怎么学习androidgrammar_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的使用方法RecyclerView4、对话框与菜单的使用: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的方法参考自:三、进阶之路(初级-&中级-&高级)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然后再学习几个已有的自定义view的例子最后就可以搞定自定义view了,所谓万变不离其宗大概再需要1-2年时间,即可达到高级工程师的技术水平。我个人认为通过《Android开发艺术探索》和《Android群英传》可以缩短这个过程为0.5-1年。注意,达到高级工程师的技术水平不代表就可以立刻成为高级工程师(受机遇、是否跳槽的影响),但是技术达到了,成为高级工程师只是很简单的事。技术要求:稍微深入的知识点AIDL、Messenger、Binder、多进程、动画、滑动冲突、自定义View、消息队列等书籍推荐《Android开发艺术探索》、《Android群英传》3、高级工程师小明成为了梦寐以求的高级工程师,月薪达到了20k,还拿到了一丢丢股票。这个时候小明的Android水平已经不错了,但是小明的目标是资深工程师,小明听说资深工程师月薪可以达到30k+。为了成为Android资深工程师,需要学习的东西就更多了,并且有些并不是那么具体了,如下所示:继续加深理解”稍微深入的知识点“中所定义的内容了解系统核心机制:了解SystemServer的启动过程了解主线程的消息循环模型了解AMS和PMS的工作原理能够回答问题”一个应用存在多少个Window?“了解四大组件的大概工作流程…基本知识点的细节Activity的启动模式以及异常情况下不同Activity的表现Service的onBind和onReBind的关联onServiceDisconnected(ComponentName className)和binderDied()的区别AsyncTask在不同版本上的表现细节线程池的细节和参数配置…熟悉设计模式,有架构意识学习方法这个时候已经没有太具体的学习方法了,无非就是看书、看源码和做项目,平时多种总结,尽量将知识融会贯通从而形成一种体系化的感觉。同时这个阶段对架构是有一定要求的,架构是抽象的,但是设计模式是具体的,所以一定要加强下设计模式的学习。关于设计模式的学习,最近一本新书推荐给大家《Android 源码设计模式解析与实战》,既可以学习设计模式,又可能体会到Android源码中的设计思想,我最近也在阅读此书。技术要求:稍微深入的知识点系统核心机制基本知识点的细节设计模式和架构书籍推荐《Android开发艺术探索》、《Android 源码设计模式解析与实战》、《Android内核剖析》参考自:四、学习视频跟书籍当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的,我这里给你们整理了大概80G的学习视频跟书籍,如果你想第一时间看我们的后期文章,扫码关注公众号,每周不定期推送Android开发实战教程文章,你还等什么,赶快关注吧,学好技术,出任ceo,赢取白富美。。。。
Android开发666 - 安卓开发技术分享
扫描二维码加关注
已有帐号?
无法登录?
社交帐号登录

我要回帖

 

随机推荐