第一部分:开发前的准备-第二章 基础入门
第2章 基础入门
本章是一些基础性的东西,学习Android前我们要了解下自己需要具备些什么知识,还有对目前Android设备的分布,有一个大概的了解。
2.1 学习Android前我们需要具备的知识
(1)java基础:包括语法以及一些常用的API。(必要)
(2)面向对象基础:真的很重要(必要)
(3)C/C++基础:以后底层开发可能需要用到。(可选)
(4)有设计模式基础:用于设计软件的架构,可复用面向对象软件的基础。(可选)
(5)英语。自学(可选)
(6)良好的代码风格(必要)
2.1.1java基础
Android绝对大部分是java语法,所以熟悉java是必要的,最好精通java语法。会对你开发一款好的应用起到至关重要的作用。这里我推荐Core Java和Effective Java两本书都要看,仔细的看。如果你要有选择性的慢读,并要实践过,思考过,那么恭喜你!你的java语言基础已经过关了
举个例子:
public class Demo { static { //expr1 } public Demo() { //expr2 } } //请说出expr1和expr2的区别与作用,面试时常考。
2.1.2面向对象基础
你必须确保你有良好的面向对象思想,或者深入点面向接口思想。例如很多公司用的网络聊天协议xmpp,它的java版本使用的是过时的goto语句,这种语法完全是面向过程的跳转,很难维护
2.1.3C/C++基础
C/C++这个一直是广泛讨论的话题,喜欢它的人很喜欢,不喜欢的也很不喜欢。但我建议你最好在有空的时候学一下,对于大型项目(对性能要求比较高),PC游戏,服务端来说,它是至关重要的。
2.1.4有设计模式基础
设计模式你需要了解,但不必非要套进去,好的设计模式是你在长期写项目过程中体会出来的,不是说你用了设计模式就一定是好的架构,要用的好,用的灵活。举个例子:用的很多的状态模式。在游戏中经常会用到此模式,但我们写1个只有2种状态的小例子,你难道也用状态机吗?其实2种状态完全可以if (){}else(){}解决它。虽然说好的设计模式的确让软件架构更清晰易维护,但也不能滥用。推荐大家看一本入门级的书<<大话设计模式>>
2.1.5英语
为什么要学英语?答案很简单,计算机新型的技术都是国外发展到国内的,特别是美国。这些新技术的第一手资料都是面向全世界的语言《英语》。好吧,就算你不想学习最新的技能,但源码和API你总要看一下吧,他会发现都是《英语》。再退一万步说,你写代码的命名总要用英语吧。如果你觉得一个“最大值”的变量名用 zuiDaZhi而不用max更好的话,就当我没说!
2.1.6良好的代码风格(必要)
不要小看它,它很重要,决定你代码的可读性,以及顺畅的团队合作
2.2 Android设备统计查询
本节讲述了Android的一些设备统计,关于系统版本,屏幕大小和密度,OpenGL Es版本。
2.2.1平台版本
1. 当前分布
下面是一个基于Android Market上14天访问的设备统计数据,如图2-1所示:
图2-1 Android平台版本统计图(2012年5月的数据,来源于Android Market)
下面描述了每个版本对应的名称,分布和API Level,如表格2-1所示。
平台 |
版本名 |
API Level |
分布 |
Android 1.5 |
Cupcake(纸杯蛋糕) |
3 |
0.3% |
Android 1.6 |
Donut(甜甜圈) |
4 |
0.7% |
Android 2.1 |
Eclair(泡芙) |
7 |
5.5% |
Android 2.2 |
Froyo(冻酸奶) |
8 |
20.9% |
Android 2.3-2.3.2 |
Gingerbread(姜饼) |
9 |
0.5% |
Android 2.3.3-2.3.7 |
10 |
63.9% |
|
Android 3.0 |
Honeycomb(蜂巢) |
11 |
0.1% |
Android 3.1 |
12 |
1.0% |
|
Android 3.2 |
13 |
2.2% |
|
Android 4.0-4.0.2 |
Ice Cream Sandwich(冰激凌三明治) |
14 |
0.5% |
Android 4.0.3 |
15 |
4.4% |
表格2-1 对应的版本名称(2012年5月的数据,来源于Android Market)
2. 历史分布
以下是一个历史分布曲线图,如图2-2所示:
图2-2 Android历史版本统计图(2012年5月的数据,来源于Android Market)
上图2-2中Android2.3.3系统版本已经成为主流。很快他的颜色块会覆盖越来越多的区域,这只是Android Market上的数据,用做参考。目前国内主流应该都是2.3了
2.2.2屏幕大小和密度
Android设备中有屏幕大小和密度两个概念
(1)大小(sizes): small, normal, large, xlarge
(2)密度(densities): ldpi (low), mdpi (medium), hdpi (high), xhdpi (extra high)
下图2-3和表格2-2描述了Android设备中关于密度和屏幕大小的分布图,关于这些概念我们还会在后面详细描述
图2-3 Android设备密度和屏幕大小分布图(2012年最新数据,来源于Android Market)
|
ldpi |
mdpi |
hdpi |
xhdpi |
small |
2.3% |
|
2.4% |
|
normal |
0.7% |
26.2% |
57.8% |
0.9% |
large |
0.3% |
2% |
|
|
xlarge |
|
7.4% |
|
|
表格2-2 Android设备密度和屏幕大小分布(2012年5月的数据,来源于Android Market)
看完上面的图表后,我们发现目前占有率最高的密度为 hdpi ,占有率最高的屏幕大小为Normal。具体Normal是多少英寸以后会有一篇专门的文章讲解屏幕大小和密度。但这是只是Market上的结果。并且会经常更新,请参考google官网的最新数据
2.2.3OpenGL ES版本
关于OpenGL ES做3D的方面应用的会经常使用。如果你的应用需要支持OpenGL ES可以使用 <uses-feature> 节点的android:glEsVersion。还能使用<supports-gl-texture>节点来声明OpenGL使用的压缩格式。下图2-4和表格2-3分别描述了他们的分布情况
图2-4 Android设备OpenGL ES分布图(2012年5月的数据,来源于Android Market)
OpenGL ES 版本 |
分布 |
1.1 only |
15.1% |
2.0 & 1.1 |
84.9% |
表格2-3 Android设备OpenGL ES分布数据(2012年5月的数据,来源于Android Market)
看来目前绝大部分的设备都是同时支持2.0和1.1的。仅支持1.1的设备只占15% 左右。
2.3 本章小结
本章介绍了一些我们需要掌握的知识,还有Android设备分布的一些情况,它能给我们做参考,指引一些方向,让我们开发更具有目的性。笔者建议读者最好能尽量多的掌握这些知识。“对付游戏Boss”就更游刃有余了。
本文来自jy02432443,QQ78117253。转载请保留出处,并保留追究法律责任的权利