Android 学习已有一年半有余,先后做过两款游戏、三款应用和搭建一台服务端,也了解过一些Android相关的源码(

JDK

、SDK和NDK)

后来想学深入点,搞过两款开源项目(

LGame



AChartEngine

),还发布过自己的开源项目(

wsi-lgame-pro



mobilesurvey

),现在总结一下自己的经验和心得


Android 入门

一开始学Android,主要看了三本书

《Android开发教程&笔记》,讲解了Android起源、Android框架、环境搭建、简单Demo等开发入门知识,对Android概念有个感性认识,知道Android是个什么东东

《Android应用开发揭秘》,重点练习了各种控件的使用,图片操作和动画,数据存储的各种方式和使用场景,以及网络通信,其中我感觉这本书对网络通信部分讲得最好

《Android 3D游戏开发》,重点看了View和SurfaceView绘制图片的原理和流程,用来做游戏开发,后来把随书的几个示例都调试通了,熟悉了各个资源文件夹的作用

《Android核心技术与实例详解》,其实这本书就没啥核心技术,也都是一些应用层的基础知识,重点是对手机通信、桌面组件、传感器和google服务讲得比较全面

就这样高强度学习了将近一个月,就算Android入门了,当时都是在Ubuntu环境下搭建和开发的,在练习和学习过程中,有哪不懂就上网查,在此推荐

stackoverflow


Android 进阶

android入门后,只会照着别人的葫芦来画瓢,即没有设计思想,也没有自主原创的代码,不好不好

于是乎,进了公司跟着项目走,用项目来驱动自己去学习和提高

公司是1+1开发模式,即1个美工 + 1个工程师,负责完成一个项目(主要是游戏开发),就完全需要自己设计游戏的布局、逻辑,以及各种动画,来增强用户体验的效果

当时主要是看Android官方的SDK

API文档

、中文

API文档



JDK源码

,对有些感念不清楚,就上论坛去找答案,如

CSDN



ITEye



IBM



知乎

,或者去啃google 官方的

文档


Android 高级

在后来,掌握了常用控件、view、surfaceview使用方式,知道怎样去适配不同屏幕后,每天就是重复的工作,堆砌代码,难以进一步去提升自己

于是就自己给自个找点事干,自定义控件,如对话框背景等,或去

google code

找些开源的代码下来研究,学习人家的设计思想、模块功能的划分、代码组织结构等知识

这个过程中,涉及到的知识比较多,如版本管理工具

SVN



Git

、Mercurial,如

设计模式

的思想,如怎样构建通用的开源应用框架(考虑sdk1.5等版本),如何适用在不同屏幕分辨率的手机上等等

学习中会不断遇到一个又一个新的问题,因此需要不断去查资料、再学习各种工具,逐步积累,潜移默化中自己掌握的知识和工具就多了,眼界也开阔了

这里推荐几个进阶的好书:

《Android技术内幕.系统卷》,此书与《Android应用开发揭秘》对应的系统篇,也是由杨丰盛著,主要讲解Android内部底层的实现,涉及到Linux、硬件驱动和汇编

老罗的

博客

,讲解Android底层的各个模块比较详尽、透彻,我有事没事会去访问、溜达,学习一些底层的实现,让自己增长一点见识,这样对理解应用层会有帮助


Android 开源

学习编程,最好的最快的方式,就是先阅读大量源代码,学习、借鉴,吸收,拿来主义,融会贯通,再加工,化为己用 —— 师夷长技以自强  ^_^

这里推荐几个比较好的开源社区:


google code

(google 开源社区,包含google自己的开源项目,如

chromium



gtest

等,也包括其它的,如著名的MySQL、JavaScript、Python、...)


github

(版本工具Git进行管理维护,英文)


oschina

(开源中国,中文的开源社区)