一位自学Android的经验总结

原文地址:请扫文后stormzhang大神的微信公众号——AndroidDeveloper

1  写在前面


这篇文章是来自我司一位同事的博客,值得一提的是她是学的财务专业,第一份工作是会计,出于对编程的热爱,她毅然决然的自学 Android ,并且辞职从事了 Android 开发的工作,今年年初我在公众号发了篇招聘,她关注我们很久了,于是果断来应聘薄荷,我自己是自学过来的,所以我很理解那份自学的不易,令我没想到的是她的编程技能很扎实,而且很全面,我想大概是出于对编程非一般的热爱才能进步如此之快吧。


事实证明,我看人的水平还是蛮不错的,她在试用期间表现优秀,周围同事也很认可,上周已经成功转正,这是她博客的一篇文章,没有华丽的辞藻,但是她的自学经验值得你们很多人借鉴!




简单介绍下,非计算机专业,14年开始接触编程,陆续学习了些 Android 知识。然后年底的时候辞职开始专心学习 Android 开发。那时候其实差不多把「第一行代码」看完了,对 Android 基础的知识有了一定的了解。


2 自学过程


由于自己习惯把做过的一些 demo 放到 github 上,正好可以借此回顾下自学的过程。


其实 android 入门的教程是很多的,比如我看的《第一行代码》(强推),官方教程(强推),极客学院的视频课程等资料。但是,我在学完了之后其实很困惑,四大组件学完了然后呢?我只能根据书上的例子敲 demo ,做不出什么实际的东西来。


然后想到要自己做出个 App 来,现在想来这虽然有用,但不是一个高效的方法。


因为做一个 App 不是一件容易的事,除了代码方面的工作,设计和功能都是要进行构思的,而这两项工作都很费功夫。


所以,我决定从模仿一个 App 的UI开始。


3  豆瓣Demo


我首先做的是一个非常粗略地模仿豆瓣UI的 demo 。



GitHub地址:https://github.com/KayWu/Douban

Demo详细介绍:http://kaywu.github.io/2015/04/03/DoubanDemo/


这个 demo 虽然简单,但是用到了几个非常常用的控件,如 ViewPager (居家必备), SwipeRefreshLayout (官方下拉刷新),  PagerSlidingTabStrip (常用的ViewPager Indicator)。我也是在这个demo中第一次使用到了开源库,体会到了 gradle 导库的爽感。


4  简易知乎日报


第一个demo完成了之后,挺开心。但是想想,光滑来滑去也没太多意思。总得来些网络请求之类的吧,但是自己又没有api,正巧这时候发现了「纯净知乎日报」,既是个开源的App,wiki还有针对知乎Api的分析。于是就先拿来玩耍了下,然后学到了不少东西,如 java 文件的包设计,一些自定义的 drawable 的使用,如 layer-list,  shape 等等。


学完了的东西就得用起来,于是我就做了自己的知乎日报。



GitHub地址:https://github.com/KayWu/Zhihu


这个App在很大程度上参考了纯净知乎日报,比如网络请求同样是用 asynctask 封装,gson 解析,图片加载用的是 universal-image-loader 等等。


但是又加了自己的一些东西,比如 webview+css 样式的运用,以及收藏功能的实现。前者是通过 google+stackoverflow,后者只是简单的数据库的应用。


5  仿堆糖UI


现在终于可以做出一个比较简易的App了,虽然是在大量借鉴的情况下,但起码又是一个大的进步。


接下来我又做了一个高仿堆糖UI的App,纯UI,没有网络交互。


堆糖首页


GitHub地址:https://github.com/KayWu/Duitang


这个阶段UI的仿照就比较细致了,而且随着UI复杂度的提升,可能会出现 Touch 事件冲突的现象。比如热门页那里,ViewPager 的左右滑动和下拉刷新是有冲突的,我采取的解决方法可以看 github 里面的介绍。瀑布流、actionbar透明度的变化,都是通过 google+stackoverflow 一步步解决的。


这个App是手工通过玩正版App一步步拷下来的,基本是看图写代码。大量的看、写、比、改,布局写法的熟练度迅速上升。
做下来之后,不是太过复杂的界面基本可以Hold住了。


6  上线App


接下来就跑到一家创业公司做App去了。独立开发的App已在各大市场上架。但是感觉做的一般,就不上图了。App包含了第三方分享,第三方登录,自动更新,这部分都是友盟的插件来实现的,没什么技术含量。


在这个App里我实现了网络的封装,可以通过发送请求,然后自动解析json,返回java对象。看起来好像很高大上的样子,其实就是使用了 Volley 库,实现里自己的 request ,并在 parseNetworkResponse 里使用 gson 对数据进行了处理而已。


7  经验总结


回顾结束,下面讲讲一些经验总结。


1. 从简单的东西做起,然后一步步加深

我刚开始的仿豆瓣其实非常的粗略,但是通过它熟悉了Viewpager,SwipeRefreshLayout,而这两项又在后面的项目中大量运用到。自己做的东西也从以前的只有UI,到加入网络请求,再到封装网络。


2. 如果没有具体的App的点子,从模仿开始

比如可以简单的模仿一个App的UI,或者学习一个简单的开源App,然后通过学习自己制作一个类似的,尝试增加一些小功能。


3. 遇到瓶颈的时候,不要想太多,只管努力就是了
虽然上面的经历回顾写的好像顺风顺水的样子,其实完全不是,经常几天都没有啥进展。
在那时候也会对自己有些怀疑,但是不要想太多,努力下去就是了。
因为编程需要积累,而积累的反馈是具有延迟性的,一点点的量变引起质变。
比较常见的情况是,可能好几天都没有啥突破,然后过了一段时间后,突然发现自己已经进步了不少。


4. 多想想有没有更好的实现方法
比如学会用asynctask来进行网路请求后,可以想想有没有更好的实现方式。这时就可以找下相关的网络库,比如volley, retrofit之类的进行学习。


5. 学会使用开源库
Android现在的开源库已经比较强大了,比如图片加载库有picasso,universal-image-loader,glide等等。
开源库的总结可以看看 https://github.com/Trinea/android-open-project ,整理的比较全面了。

程度上升了之后可以去看看 https://github.com/android-cn/android-open-project-analysis ,了解下开源库的实现原理。


6. 把英语练好,学会翻墙
大部分碰到的问题都可以通过 google+stackoverflow 解决。


微信不支持外链,可点击「阅读原文」查看,觉得有帮助不妨转发支持下,长按二维码订阅。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值