Android项目的目录结构
src文件夹:用来存放java的源文件
gen文件夹:存放由开发工具自己生成的java文件,在这个文件夹中有个R.java文件(用于登记各种资源的ID),是由编译器在放入资源以后自动生成的id
res文件夹:用来存放图片,文字等一些资源其中drawable-hdpi文件夹是专门用来存放图片的。当放进去以后R.java文件就会自动生成一个id。(R文件是由开发工具给我们自动创建的,不需要我们修改也不允许我们去修改)。
res/anim/存放定义动画的XML文件
res/xml/在Activity中使用getResource().getXML()读取该目录下的XML资源文件。
res/raw/该目录用于存放应用使用到的原始文件,如音效文件等。编译文件时,这些数据不会被编译,它们被直接加入到程序安装包里。为了在程序中使用这些资源,你可以调用getResources().openRawResource(ID),参数(ID)形式:R.raw.somefilename
由于手机的屏幕分辨率有大有小,所以有说那个文件夹用来存放不同分辨率的图片分别是hdpi(高分辨率)、ldpi(低分辨率)、mdpi(中分辨率)。当软件运行在android操作系统的时候,操作系统可以根据手机的分辨率自动分配对应的图片,这个是操作系统来做的。所以以后如果需要的话可以给一张图片做几个不同分辨率的图片。
layout文件:main.xml是存放软件的布局。如果在其中再添加xml文件进去也会在R.java文件中生成对应的id。
values用来存放应用中所使用的尺寸或者颜色等,或者字符串。string.xml用来存放尺寸,文字颜色等信息,它里面有个键,通过这个键来调用其中的字符串信息。当在string.xml文件中存入信息后再R.java文件中会自动给予分配相应的id进去。
使用string.xml文件的原因有两个:第一个是为了是实现以后的国际化,在修改语言的时候可以再这个里面直接替换,另一个原因是可以把重复使用的东西放到这个里面,减少软件占用的内存。
如果以后再应用中需要使用到很多文字,可以创建一些xml文件把文字存入这些文件中。定义方法也跟这个string.xml文件相同。名字可以随便起。(配置文件)
assets文件,也是一个资源文件,在这个文件夹里面存放文件的话不会在R.java文件夹中生成id,如果需要访问的话是通过路径来访问的, 例如:file:///android_asset/xxx.3gp
AndridManifest.xml文件:项目的清单文件,列出了应用中的所具有的功能,一眼就看出来系统拥有什么服务,以后开发的组件需要在这个清单文件中进行配置。BroadCastReceiver还可以通过编码的形式进行登记。
清单文件中的各个代码的作用,命名空间,包名,包名用于唯一便是一个应用,后面两个代表开发的版本号和版本名称。版本名称可以随便起。
application节点:可以把应用中的组件配置到里面,
icon是用来指定应用的图标的,@可以看作是java文件,drawable可以看作是R.java文件中的drawable内部类。
icon就可以看作drawable这个内部类中的常量名称。
在编写代码的时候最好吧R.java文件关掉,因为这样很有可能使得Eclipse死掉。
label用来指定应用的名称。
Activity节点专门用来配置Activity这种类型的组件。
一个应用可以有多个Activity,以后再开发的时候有多个Activity需要在清单文件中进行配置。由于MainActivity是直接在包下面,activity名字在前面加一个“.”,“.”表示当前应用所在包。
如果MainActivity也就是主Activity是主界面,当它在清单文件中进行注册的时候,如果它直接在应用的包中,那么它可以再这个Activity的前面加一个“.”表示在应用的包下面,并且这个点可以省略,如果这个类在应用的包的子包下面,那么可以这样写“.XXX.Activity”,但是这个是时候这个“.”就不能省略了,否则它会找不到这个类。所以不管以后在还是不在应用的包下面还是子包下面,我们最好都在前面加个“.”
Activity中的label就是用来表明这个Activity的标题。
intent-filter(意图过滤器):对数据进行过滤,如果匹配了就干一件事情,如果不匹配那么就不实行这件事情。
action(动作):
category(类别):
以上的两项参数配合使用使得该应用程序放置到启动列表中。而且这两项参数只能应用到一个Activity,因为程序只能有一个入口,所以只能应用到一个Activity中。
miniSdkVersion:用来指定该应用程序的最低兼容的安卓版本。
清单文件在软件安装的时候就开始被操作系统读取了,可以对清单文件中的组件进行登记。
defaultproperties:主要是说明这个项目是按照哪个项目的版本来编写的。
应用的安装与启动过程:
首先java的编译器会把.java文件编译成.class文件然后通过
android的sdk中的dx工具将.class文件转换成.dex文件,接下来进行打包操作。所谓打包操作就是将dex文件和资源进行打包,打包成一个压缩文件,在打包的时候会进行签名。签名就是软件开发者的所属权的一种标志。
其阿明的时候需要用到密钥,这个密钥文件在windows---prefence---android---build---里面有一个缺省文件,默认可以使用这个文件进行打包签名。
然后把apk安装到模拟器中(使用的adb命令:adb install C;/xxx.apk)
启动过程:当用户点击图标,就相当于要激活这个Activity,当点击图标的时候,会创建一个进程,然后创建主线程,然后在主线程中实例化一个Activity(它会把应用有关的信息存放到Activity中),首先对MainActivity进行实例化然后调用oncreate方法,在把这个任务放到栈中。
在布局文件中会有命名空间,对于顶级元素就一定会有命名空间。
为了匹配不同的分辨率,不同的像素密度,推荐使用dip(dp),dp的缩写是dip,文字使用sp。
match_parent和fill_parent是等价的,它是后来安卓2.1之后退出来的,会觉得match回避fill好一些。
src文件夹:用来存放java的源文件
gen文件夹:存放由开发工具自己生成的java文件,在这个文件夹中有个R.java文件(用于登记各种资源的ID),是由编译器在放入资源以后自动生成的id
res文件夹:用来存放图片,文字等一些资源其中drawable-hdpi文件夹是专门用来存放图片的。当放进去以后R.java文件就会自动生成一个id。(R文件是由开发工具给我们自动创建的,不需要我们修改也不允许我们去修改)。
res/anim/存放定义动画的XML文件
res/xml/在Activity中使用getResource().getXML()读取该目录下的XML资源文件。
res/raw/该目录用于存放应用使用到的原始文件,如音效文件等。编译文件时,这些数据不会被编译,它们被直接加入到程序安装包里。为了在程序中使用这些资源,你可以调用getResources().openRawResource(ID),参数(ID)形式:R.raw.somefilename
由于手机的屏幕分辨率有大有小,所以有说那个文件夹用来存放不同分辨率的图片分别是hdpi(高分辨率)、ldpi(低分辨率)、mdpi(中分辨率)。当软件运行在android操作系统的时候,操作系统可以根据手机的分辨率自动分配对应的图片,这个是操作系统来做的。所以以后如果需要的话可以给一张图片做几个不同分辨率的图片。
layout文件:main.xml是存放软件的布局。如果在其中再添加xml文件进去也会在R.java文件中生成对应的id。
values用来存放应用中所使用的尺寸或者颜色等,或者字符串。string.xml用来存放尺寸,文字颜色等信息,它里面有个键,通过这个键来调用其中的字符串信息。当在string.xml文件中存入信息后再R.java文件中会自动给予分配相应的id进去。
使用string.xml文件的原因有两个:第一个是为了是实现以后的国际化,在修改语言的时候可以再这个里面直接替换,另一个原因是可以把重复使用的东西放到这个里面,减少软件占用的内存。
如果以后再应用中需要使用到很多文字,可以创建一些xml文件把文字存入这些文件中。定义方法也跟这个string.xml文件相同。名字可以随便起。(配置文件)
assets文件,也是一个资源文件,在这个文件夹里面存放文件的话不会在R.java文件夹中生成id,如果需要访问的话是通过路径来访问的, 例如:file:///android_asset/xxx.3gp
AndridManifest.xml文件:项目的清单文件,列出了应用中的所具有的功能,一眼就看出来系统拥有什么服务,以后开发的组件需要在这个清单文件中进行配置。BroadCastReceiver还可以通过编码的形式进行登记。
清单文件中的各个代码的作用,命名空间,包名,包名用于唯一便是一个应用,后面两个代表开发的版本号和版本名称。版本名称可以随便起。
application节点:可以把应用中的组件配置到里面,
icon是用来指定应用的图标的,@可以看作是java文件,drawable可以看作是R.java文件中的drawable内部类。
icon就可以看作drawable这个内部类中的常量名称。
在编写代码的时候最好吧R.java文件关掉,因为这样很有可能使得Eclipse死掉。
label用来指定应用的名称。
Activity节点专门用来配置Activity这种类型的组件。
一个应用可以有多个Activity,以后再开发的时候有多个Activity需要在清单文件中进行配置。由于MainActivity是直接在包下面,activity名字在前面加一个“.”,“.”表示当前应用所在包。
如果MainActivity也就是主Activity是主界面,当它在清单文件中进行注册的时候,如果它直接在应用的包中,那么它可以再这个Activity的前面加一个“.”表示在应用的包下面,并且这个点可以省略,如果这个类在应用的包的子包下面,那么可以这样写“.XXX.Activity”,但是这个是时候这个“.”就不能省略了,否则它会找不到这个类。所以不管以后在还是不在应用的包下面还是子包下面,我们最好都在前面加个“.”
Activity中的label就是用来表明这个Activity的标题。
intent-filter(意图过滤器):对数据进行过滤,如果匹配了就干一件事情,如果不匹配那么就不实行这件事情。
action(动作):
category(类别):
以上的两项参数配合使用使得该应用程序放置到启动列表中。而且这两项参数只能应用到一个Activity,因为程序只能有一个入口,所以只能应用到一个Activity中。
miniSdkVersion:用来指定该应用程序的最低兼容的安卓版本。
清单文件在软件安装的时候就开始被操作系统读取了,可以对清单文件中的组件进行登记。
defaultproperties:主要是说明这个项目是按照哪个项目的版本来编写的。
应用的安装与启动过程:
首先java的编译器会把.java文件编译成.class文件然后通过
android的sdk中的dx工具将.class文件转换成.dex文件,接下来进行打包操作。所谓打包操作就是将dex文件和资源进行打包,打包成一个压缩文件,在打包的时候会进行签名。签名就是软件开发者的所属权的一种标志。
其阿明的时候需要用到密钥,这个密钥文件在windows---prefence---android---build---里面有一个缺省文件,默认可以使用这个文件进行打包签名。
然后把apk安装到模拟器中(使用的adb命令:adb install C;/xxx.apk)
启动过程:当用户点击图标,就相当于要激活这个Activity,当点击图标的时候,会创建一个进程,然后创建主线程,然后在主线程中实例化一个Activity(它会把应用有关的信息存放到Activity中),首先对MainActivity进行实例化然后调用oncreate方法,在把这个任务放到栈中。
在布局文件中会有命名空间,对于顶级元素就一定会有命名空间。
为了匹配不同的分辨率,不同的像素密度,推荐使用dip(dp),dp的缩写是dip,文字使用sp。
match_parent和fill_parent是等价的,它是后来安卓2.1之后退出来的,会觉得match回避fill好一些。