codecamp

《2015最新Android基础入门教程》完结散花~

引言:

从六月底就开始编写这套教程,历时将近五个多月,今天终于写完了,全套教程正文部分148篇, 十大章,从基本UI控件到四大组件,Intent,Fragment,事件处理,数据存储,网络编程,绘图与动画, 多媒体,系统服务等都进行了详细的讲解!代码都是都是在Android Studio上进行编写的,全文 采用Markdown,行文结构清晰,还结合了实际开发中一些常见的问题进行了剖析...由于个人能力的局限, 虽然竭尽全力,但是难免还有有一些错误纰漏,望读者海涵指出,万分感激!在写这套教材的过程中, 感触良多,借着完结散花这最后一节一吐而快,也算是暂时告别自己博客生涯的一笔吧...  一吐而快~


1.此套教程的由来

记得那是在五月份的某一天晚上,刚和舍友打完撸啊撸,玩起手机来。不经意的我加了w3c鸟巢的 公众号,然后看了下推送过来的文章,感觉有点意思,于是乎就到度娘上搜了下"w3c鸟巢"。发现有 个W3Cschool教程的栏目,然后里面的教程大部分都是Web类的基础教程,而我看到了移动端的教程,上面 有着"学习Android"!这样一个教程

吓得我赶忙收拾东西,拔腿就跑,因为园区这边好像是12点就关后门的,一到那里发现门是关 着的,心理顿时凉了一大半,妈蛋,难道今晚真的要睡公司么...后来走进一看才发现门是虚掩的, 并没锁,最后还是顺利地回到了宿舍...周六日一般也没什么节目,都是回公司码字,偶尔 天气好就去跟别人打打羽毛球,大部分时间还是花在码字上,就这样坚持了五个多月,这套教程 也总算完结了~ 

2015.4

接着我又找了另一份工作,在清华科技园那边,这就不是一家外包公司了,他们主要是 做安防和智能家居类的,氛围还是不错的,偶尔会有技术问题的撕比,周五下午还有技术交流, 而且给我配了个新的电脑和显示器,感觉自己在这里呆肯定会很嗨皮!第一个月看看文档什么的, 看看要接手的项目什么的,小日子还是过得挺滋润的,可是好景不长,做了3年的那个老员工要走了! 他手上的两个项目都丢给了我,而且我还要开始搞另一个新的项目,这没什么,勉勉强强还可以 扛下来,但是那两个接手的项目有个要改,而且要出版本,我连代码都还没来得及熟悉...怎么玩 得过来啊,自己做不过来,又不想耗时间,到时期限到了我什么都没搞出来,这样还拖累了别人! 记得想辞职前的那周过得非常的压抑,机缘巧合,好像是周三的下午吧,收到了现在公司HR打来 的电话,然后和现在的经理电话面试了下,问了一些Android基础的东西,聊得还蛮嗨的,然后约 个时间见见面,然后周五就过来面试了,再接着聊了一下现在公司的一些情况,第一感觉公司 环境还可以吧,位置都比较宽敞,然后跟他说了下我还没拿到毕业证的事,能不能转正, 可能是他当时口爽,说没什么跟人事那边说下就好...然而我在这里蹲半年了,还是实习... 然后周一回公司提交了辞职申请,然后离开了第二家公司,在这个公司的一个月,扩展了一下 自己的视野,知道了NDK和视频编解码这些东西~此时我试用3.8k,转正4.2k!

2015.5

嗯,辞去第二间公司的工作后,在学校嗨了一个星期,随手把自己的毕设给弄 完了,被迫分割成两个应用的毕设:海绵表表和一起啪啪啪,现在看来那两个自己写出来的东西, 无法直视,后来把毕设卖了,200块... 然后周一的时候就来到了现在的这家公司,又是接手项目,原来这里的那个Android开发的大牛 要跳到魅族去,第一次感觉到大牛的气息,假如他并没有走而是继续呆着多好呢? 或许我此时又会是另外一种不同的结局了是吧~从SVN过渡到Git,从图形化界面过渡到命令行; 知道了注解,RxJava,okhttp,github,多渠道打包等等,愉快地相处了一周后,大牛走了, 接下来就是我自己看项目了,感觉就像来到一个新大陆一样,很多东西我以前都没见过, 就这样嗨了将近一个月,公司招到了另一名Android开发的,一开始听说是三年工作经验, 感觉有人带我飞了,然而事与愿违,在他身上我并没有感觉到一股大牛的气息,感觉可能是在 这个行业呆了三年吧,水平很一般,和自己比的话可能业务经验多一点吧,跟他讨论md他听都 没听过,Android Studio也不知道,其他的更不用说,记得有一次问他一个简单的控件怎么 自定义,他的回答是:网上找下改改就能用,我想问的是实现的思路,得到回答是:知道怎么用就好... 嗯,好吧!三年嘛,项目肯定是他来接手的啦,而经理丢给了我另外一个项目, 一个无人机上绑手机测量基站天线角度等信息,然后通过wifi显示到地面上的另一台手机上, 手机自身数据采集和数据传输到没什么,难点是串口通信(FTDI)的东西,手机 通过OTG线连单片机,完成指令收发,看着API文档撸了一个星期,连个最简单的Demo都写不出来 有发没收...同样的情况又持续了一个星期,好吧,写不出东西的感觉真的很不爽,后来没办法, 只能反编译别人的apk了,花了两天时间把别人apk里的代码抽取出最关键的部分,从6000多行 的代码变成500多行的代码,看到单片机上的收发信号灯闪烁,还蛮有成就感的! 可惜好景不长经理说要加个实时视频播放的,我真是....这玩意我都没搞过,怎么玩,于是到 Github上找了,几个开源的视频直播项目,后来还是找了WifiCarema作为研究项目,然后因为 h264库编译的问题纠结了差不多两个月,结果还是没有解决,结果项目外包给了北京那边的人 做,嗯,我的第一个项目就这样阉割了...接着做了一个很简单的小东西,再接着就到现在 就是一直在跟踪解决websocket的问题了~我司推送并不是用的第三方,而是自己用socketio 搭建的一个推送平台,用socketio的原因是三个平台都可以用一套嘛,iOS,Android,还有 web端,然后出现了漏掉报文或者收不到位置更新的问题,到现在还没找到问题发生的原因, 连问题都重现不了,我们这边一直测都没问题,一到客户手里就各种问题... 现在还在纠结这个问题中...来这里半年了,还是实习生,实习工资3k,毕业证起码要明年六月份才能 拿到,应该没得转正了,唉..

嗯,上面就是我今年到现在的一些情况,前段时间去追梦网络面试,和面试官谈了谈自己 当前的一些情况,他说感觉我走了野路子,很多东西都走偏了,然后跟我说毕业这一年 很关键,以后成型了就难改了,然后又谈了一些架构的东西,嗯,第一次那么想进一家公司, 哪怕实习两个月也好,嗯,很遗憾,结果并没有拿到offer,不过也很感谢全齐大神给自己 上了一堂课,总算知道自己接下来要去学点什么~然后又面了两家,没什么感觉,不是自己 向往的类型,最后投了一波魅族实习生,哈哈,连面试的机会都没有,这是第一次,估计 HR连简历都没看到吧~ 


3.一些自学心得以及资源分享

怎么学Android,这可能是初学者问得最多的问题了,通过上面你也知道了小猪有多屎, 所以下面这些都是鄙人对于自学的一些浅显的看法而已,不喜请喷~

1)看书

入门推荐的书

  • 第一行代码》:这本就不用说啦,郭霖大神写的书,入门必备
  • Android群英传》:这本是医生(徐宜生)写的,嘿嘿,双11买的,今天刚收到, 翻了下,感觉内容还是蛮简单,适合看完第一本书,或者会点Android的~

可能有的朋友会说,还有李刚Android疯狂讲义咧...嗯,买来当字典查也可以, 但是感觉看上面两本会让你更快入门,另外,在看第一行代码的时候,你也可以配合 着小猪写的基础入门教程一同服用,效果更佳~

进阶推荐的书

也是接下来自己想入手的几本书:

  • Android源码设计模式解析与实战》: 何红辉(Simple哥),关爱民(爱哥)两人的大作,既可以学 习到设计模式,也可以体会到Android中蕴含的一些设计思想!

  • Android开发艺术探索》:任玉刚,侧重于Android知识的体系化和系统工作机制的分析

  • 深入解析Android 5.0系统 》:剖析了最新Android 5.0 系统主要框架的原理和具体实现~

上述几本书我都还没摸过(还没入手),都是广受好评的几本书~这里也推荐下!

2)看视频

网上关于Android的视频教程有很多,这里分享下基神力荐的黑马教程吧:

黑马28期Android全套视频无加密完整版:密码:h7jz

52期不加密版:密码:zve8

当然下面这些视频学习网站也很不错,也推荐下

慕课网

极客学院

麦子学院

3)看别人的技术博客

4)高质量Android社区

5)官方学习网站/Wiki

6)代码/项目下载

 嗯,大部分时间我都会选择到Github上面找,有很多开源的第三方,下面这个务必Star:

Android 开源项目分类汇总

然后笔者也分享下以前在某宝花了50多块买的一些代码吧:

5000套Android源码 密码:6we6 3175套iOS源码 密码:53v9

上面的这套代码很多都是重复的,而且大部分都是基于Eclipse,涵括的还是比较广的,可以一下!

7)梯子工具

嗯,假如你不想经常改hosts或者不想买vpn,但是想用Google的话,那么你可以使用蓝灯(Lantern)~ 自己搜"Lantern"下载吧~

8)一些其他的碎碎念:

嗯,上面的资源大部分来自于:Android学习资源网站大全,请务必Star!!!后续如果 有什么新的资源都会在上面进行更新,也欢迎大家share自己的一些收藏,上面的内容是小猪 群里的第一大手——基神所写,当然还有B神和曹神,街神等,这里非常感谢各位一直以来对我的 一些指导以及帮助~ 

不知道你看到上面的资源是不是,收藏收藏,买买买,下下下~

我想说的是,收藏了不去看,只是一个Url而已;下载了不去看,只是一堆数据而已; 买了书不去看,也只是一沓纸!不要让你自己只是看起来很忙很努力的样子, 装比给谁看?学到手的东西才是自己的,很喜欢这样一句话: "技术之路最公平也最残酷的原因是:没有捷径,需要日积月累的积累,以及对技术持久的热情。" 还记得很久之前看的锤子科技的射角设计总监罗子雄仔tedx上演讲的: "如何成为一名优秀的设计师"说过的这么一段话: 格拉德威尔在《异类》一书中指出:"人们眼中的天才,并非卓越非凡,而是付出了持续不断的努力, 一万小时的锤炼是任何人从平凡变成超凡的必要条件。"一万小时,也就是说你每天工作8小时的时间, 每周工作5天,你需要5年。你无需天才,无需智商过人,无需三头六臂,无需头上长角,你只需要持 续的、坚持的努力,有正确的方法,就能够在设计领域,一个专业中独当一面。 尽管他讲的是设计,但是很多东西都是相通的,嘿嘿,无情地上了一大碗鸡汤~ 总结下自学,无非: 多看书,看博客,做项目,看源码,不断的总结反思,让自己所学的东西所学的东西结构化!


4)一些答疑

下面是一些读者经常问到的问题,下面统一答复下:

1.我是以前学XX的或者我不是搞编程的,我想来学Android,能学好不?之类的问题! 答:前段时间在医生(徐宜生)的新浪微博看到,一位65岁的大爷,到他的公司向他请问 Android Studio,看到这里,你觉得上面的问题是问题吗?

2.XXX报错了?怎么办之类的问题 答:这种最频繁,其实很多都可以在度娘或者谷哥上找到答案,这么多人搞Android难道就 你一个人出现过这样的问题吗?或者到Stackoverflow上提问等,先自己搜过思考过,再去 问别人!!!而且别人也没有回答你的义务,别搞得好像别人不回答你的问题就很什么, 然后就恶言相向!注意问问题的技巧,整理语言,发log,出错位置代码等!

3.想加小猪做好友,为什么我拒绝了? 答:不知道你在哪看到了我的QQ,然后看了我写的东西,就迫切的想加我为好友, 我想问,加了,然后呢?问问题更方便了?刚开始加我的我都会家,一般都是问问题, 我每次都会很耐心的解答,然后就开始依赖我了,一出问题就找我...一个两个没什么, 慢慢地人越来越多,我每天的时间都基本用在回答问题上了,结果自己一天下来什么都没做成... 不是说小猪高冷或者看不起初学者之类的,我也有自己的事要做,希望各位可以体谅下! 有问题,可以到群里问,管理们都是很热心的,当然,前提是你的问题别一百度就可以 找到的...别做伸手党!!!

4.基础入门教程写完,那么什么时候开始写进阶教程? 答:大家对基础入门教程的反馈都觉得写的不错,也受到了很多的好评,表扬,很感谢~ 至于进阶教程,在写基础入门的过程中就曾经简单的构思过,用百度脑图列了下大纲:

当时想着写完入门休息一个月,然后就开始写进阶系列的,大概一个月一个专题这样。 不过,进阶部分可能不会继续写,可能你会不解,为什么不写呢?坦白说下自己的一些难处吧:

首先是:花在写教程上的时间,一篇简单的教程至少需要花费我2个多小时的时间,尽管内容 比较简单,而复杂一点的,我可能需要花上2,3天!写教程不同于写笔记,要描述清晰, 写例子,贴运行效果等,笔记自己看懂就好,而教程你要让别人也看懂...

接着是:自己的进步缓慢,写完这套基本教程,和写之前的我相比,并没有什么进步; 依旧还是以前的水平...每次去面试来来去去都是说那几个破旧的项目,一点意思都没有, 我想花点时间做点什么~想学的东西有太多太多,比如,从5月份我就开始接触rxjava,然后 现在烂大街了,我还只会最简单的玩法~ 最后是:写教程不会给我带来任何的收入,上面也说了,我是一个3K实习狗,而写这套 教程是没有任何收入的,而且每个月偶尔还要给几块钱给七牛,因为图都是用的七牛的 图床,万恶的爬虫网站,把我的文章都爬过去了,然后还不注明出处,然后拼命下我的图... 这是10月份到11月份的下载流量! 

Android GPS初涉
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

第二章——Android中的UI组件的详解

第十一章——由来、答疑和资源

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }