Android从零开始(一)
android一词的本义指“机器人”,当时同时Android也是Google于07年11月5日宣布的基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
2008年9月22日,美国运营商T-MobileUSA在纽约正式发布第一款Google手机——T-MobileG1。该款手机为宏达电制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi。
知识点:
1、Dalvik虚拟机是JVM虚拟机的一种变种,Dalvik和JVM都是一种提供运行环境的虚拟平台(虽然Google至今还不承认)
Dalvik虚拟机和JVM虚拟机区别:
①、JVM运行class字节码文件
而Dalvik运行dex文件
dex是class再编译后的文件
简单的说Android中处理Java代码的流程是:
java--->class--->dex
dex会对class文件进行再优化,减少其大小,根据试验证明(官方的),大概减少的幅度可以达到50%以上,也就是说一个128kb的class文件编译成dex后只有大概64kb大小
②、JVM是运行在堆内存中的,Dalvik则是运行在寄存器中(正因为Dalvik是运行在寄存器中的,所以相对来说速度比较快)。
2、版本要求:Eclipse要求3.6以上版本、JDK6.0以上、ADT、SDK
3、建立Android工程需要填写以下信息:
3.1.ProjectName这是工程名
3.2.指定开发的Android版本
3.3.ApplicationName应用程序名称,这个名称会在设备上显示标识程序名字(可以使用中文)
3.4.package,包名,需要注意的是Android是通过包来对程序进行管理,每个程序的包名应该是唯一的,并且必须包含至少一个.(就是说要有子包)
推荐的命名方式:com.公司名或作者名.程序名称
3.5.minSDKversions当前程序允许安装设备的最小版本号,这个版本号使用level级别表示
3.6.CreateActivity创建主窗口,名字遵从类名规则
Android工程目录结构:
1、src目录:用于存放源代码
但是需要注意的是,所有的代码都必须位于src下面那个包的里面
2、gen目录:这个目录是由eclipse来创建和管理,我们不要对其进行任何修改
里面有个R.java,它是一个非常重要的VIP类,待会说
3、assets目录:资产目录,用于存放Android程序需要的资源,比如文件,视频,声音,图片等
4、bin目录:运行时产生的dex文件以及apk包都会在这个目录中
但是遗憾的是,好像低版本里没有这个东西,如果要产生apk需要第三方的工具
5、libs目录:存放jar文件
6、res目录:资源目录,用于存放Android程序需要的资源,比如界面布局,图片,声音,动画,菜单等
7、AndroidManifest.xml:资源清单文件,这是Android的配置文件,作用相当于web工程中的web.xml文件
代码分析:
Activity是活动的意思,通俗的说就是窗口(界面)
一个Android程序是由0个或多个Activity组成的
任何Activity都通过onCreate方法作为入口,我们会将界面的构建写在onCreate方法中(可以理解为swing程序中的构造方法)
R.java文件是资源索引类,在Android中所有的资源都会被R.java来索引
比如你将一张名为a.jpg的图片放入到Android的资源文件夹中,那么这个a.jpg的图片会被R.java来索引,产生一个对应这个图片的索引ID
然后为了方便我们使用,会将这个ID用常量形式表示,比如就叫a
然后要使用的时候会通过R.drawable.a来访问和使用
问题:为什么是drawable,不是aaa不是其他的目录呢?
res目录表面上看上去很普通很正常,但是事实上android有一套严格的命名和管理机制控制着这个目录
在这个目录中不能随意添加新的子目录
好吧,虽然刚刚我添加了一个,但是我添加的那一个其实是这个管理机制运行的名字,并且允许的位置
raw表示可以存放任意资源的目录,该目录必须位于res目录根下面
drawable目录:放置图片,图标的目录
layout目录:布局目录,该目录下全部都是xml文件,这些xml文件都表示某个界面布局的效果
@符号是xml文件中特有的一种引用符号,表示当前是引用某个资源的内容
@string/hello_world
表示当前是引用string下面的hello_world的内容
menu目录,菜单布局目录,都是xml文件,每个xml文件表示一组菜单。。。。。但是我个人建立菜单喜欢用代码,不喜欢用xml
values目录:常量目录,该目录下也都是xml文件,这些文件可以表示字符串常量,颜色常量,或是样式常量,然后供程序的其他地方来引用