zoukankan      html  css  js  c++  java
  • 第一部分:开发前的准备-第二章 基础入门

    第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。转载请保留出处,并保留追究法律责任的权利

  • 相关阅读:
    ContextLoaderListener作用详解
    @Autowired与@Resource的区别
    使用SimpleDateFormat时的日期和时间模式
    git将本地内容传送到远程仓库出现![rejected] master -> master (fetch first)错误
    使用SSH框架遇到的错误总结
    struts2 action中字符串转json对象出错 java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
    2017百度web前端实习生在线笔试题
    学习模型-视图-控制器MVC模式
    DOM元素加载之前执行的jQuery代码
    使用$.post和action或servlet交互 URL出现 http://localhost:8080/../[object%20Object] 错误的问题解决
  • 原文地址:https://www.cnblogs.com/tianjian/p/3430074.html
Copyright © 2011-2022 走看看