android项目目录结构
‘壹’ android studio怎么展开目录结构
一、下载安装 下载后,打开并将Android Studio拖动到Applications中去,拷贝完毕即可,可以到应用程序下将图标拖动到Dock上。 二、新建工程 安装完成后,选择默认选项点击OK即可: 进入Android Studio,开始界面和Xcode有点类似,点击New project新建一个工程,新建过程和在Eclipse上差不多。 新建工程完毕后就进入了Android Studio主界面。第一次进去可能什么也没有,点击箭头所示按钮目录结构, 后可以看到Android Studio的目录结构,和Eclipse的工程还是有一点区别的: 区别: 1.Android Studio的目录结构本来就代表一个workspace,一个workspace里面可以有Mole,可以将一个Mole理解成Eclipse中的一个Project; 2.目录中将java代码和资源文件(图片、布局文件等)全部归结为src,在src目录下有一个main的分组,同时划分出java和res两个Group,res和Eclipse下的结构一样,java下就是源码的包和类文件; 3.新建文件方式的不同,右键选择New或Command+N后出现新建菜单,类型有Java Class,也就是一般的java类,File就是普通文件,Package就是建包,值得注意的就是Android Component,它直接提供了Android中基本组件的创建。 可以选择创建Android中不同类型的组件: 三、窗口布局及主题介绍 另外,主界面底部有一个名为Android的选项卡,打开可以看到DDMS中的设备信息和Logcat输出: 顶部工具栏中可以看到和Eclipse中功能一样的一个选项,这些相信大家都比较熟悉了: 最后需要说明的是,大家看到我的主界面是暗色风格,和Google演示的是一样的风格,大家第一次使用打开的是默认风格(亮色),如果想要修改的话,进入Preferences(按Command+,)到IDE Settings下选择Colors&font并设置Schema name为Darcula就可以设置成暗色风格,如果需要自己定义样式,比如字体大小颜色等,可以新建一个Schema来自己定义 四、布局文件编写(实时预览) 最炫的功能要来了,实时编写并预览布局文件,此项功能着实大大提高开发效率,打开一个xml布局文件点击右侧Preview选项卡即可唤出预览界面,可以选择很多尺寸的手机进行预览: 同时,还可以同时预览多种不同型号和尺寸的设备,编写代码的同时适配多种机型,这不就是当初梦寐以求的嘛! 上面介绍了Android Studio的基本使用,包括安装、新建工程、工程结构以及主题设置。下面介绍一些其他技巧,以及与Eclipse之前的一些对比。需要重申一下,我所有的操作与版本是基于Mac系统,在Windows上的同学基本类似,下面就分主题开始吧: 一、从Eclipse导入工程到Android Studio 根据官方的介绍,Android Studio可以兼容Eclipse的现有工程,但需要做一些操作: 首先升级ADT到最新版本,目前为版本号为22(注意和ADT相关的组件最好一并升级,避免后期可能出现的错误) 选择需要从Eclipse导出的工程,右键选择Export并选择Android下的Generate Gradle Build Files 选择完毕后并不会导出到其他地方,而是在本地工程生成了一个build.gradle文件,在Eclipse工程中也可以看到,这个文件是Android Studio识别的 3.随后进入Android Studio并选择Import Project,可以看到刚刚在Eclipse中的项目图标变成了一个Android机器人图标,说明转换成功,这时候选择工程导入即可: 至此,就完成了从Eclipse导入现有Android工程到Android Studio,现在可以开始对工程进行操作了! 二、Eclipse工程与Android Studio的区别 Eclipse工程可以导入Android Studio运行,而反过来在Android Studio建立的工程不能在Eclipse中运行; 二者的工程结构不一样,在Eclipse中一个Project就代表一个项目工程,而在Android Studio中就和Intellij一样,一个Project代表一个工作空间,相当于Eclipse中的workspace,而在Android Studio中一个Mole就相当于Eclipse中的一个Project,这个概念需要弄明白,不要混了或觉得糊涂了。 在编辑操作上,在Eclipse中编辑修改后必须手动command+s保存文件,而在Android Studio中就和Intellij一样是自动保存的,这一点和第二点和Xcode也是类似的。 工程目录上的区别,在Eclipse中src部分一般是java文件,res部分是资源文件,包括布局文件和多媒体资源等。在Android Studio中 包括java文件和资源文件全部放到了src目录下,src目录下包括一个main文件夹,再下面就是java文件夹和res文件夹,其实这里,java文件夹就相当于Eclipse中的src,res还是那个res,这里想起了本山老师的小品“src已经不是那个src了,res还是那个res” 三、真机运行以及常用快捷键 在Android Studio中点击界面下方的Android选项卡可以看到Device信息和Logcat,连上设备后打开Android选项卡会检测真机,成功后会显示在Device中,点击顶部的绿色小箭头就可以开始运行工程了。有一点需要注意的是,运行时可以选择模拟器也可以选择真机,由于在Android Studio中运行工程的时候有一个Device优先级选择,如果不设置的话可能会出现只运行在模拟器上的现象,我们可以自行设置一下:先点击Run菜单选择Run Configuration,并选择你想选择的目标设备,可以是模拟器和真机,也可以在运行选由用户选择: 快捷键大家可以对照官方文档进行熟悉,如下表,也可以自己修改配置选项进行自定义: 个人觉得Android Studio还是有一定的前景的,这里就需要Google不断进行完善和改进了,赶紧把大家从Eclipse中解救出来吧。另外,在此期间,大家其实可以尝试使用一下Intellij IDEA,这个默认也是集成Android开发环境的。Android Studio是基于前者改进而来,二者在使用上差不多,也是Eclipse的一个不错的替代者。
‘贰’ 与Android应用程序相关的文件目录都有哪些
在搭建Android开发环境及简单地建立一个HelloWorld项目后,本篇将通过HelloWorld项目来介绍Android项目的目录结构。本文的主要主题如下:
1、HelloWorld项目的目录结构
1.1、src文件夹
1.2、gen文件夹
1.3、Android 2.1文件夹
1.4、assets
1.5、res文件夹
1.6、AndroidManifest.xml
1.7、default.properties
图1、HelloWorld项目目录结构
下面将分节介绍上面的各级目录结构。
1.1、src文件夹
顾名思义(src, source code)该文件夹是放项目的源代码的。打开HelloWorld.java文件会看到如下代码:
package helloworld.test; import android.app.Activity; import android.os.Bundle; public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
可以知道:我们新建一个简单的HelloWorld项目,系统为我们生成了一个HelloWorld.java文 件。他导入了两个类android.app.Activity和android.os.Bundle,HelloWorld类继承自Activity且重 写了onCreate方法。
以下说明针对没有学过Java或者Java基础薄弱的人
@Override
在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。
例如,public void onCreate(Bundle savedInstanceState){…….}这种写法是正确的,
如果你写成public void oncreate(Bundle savedInstanceState){…….}这样编译器回报如下错误——
The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,
以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)
而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。
android.app.Activity类:因为几乎所有的活动 (activities)都是与用户交互的,所以Activity类关注创建窗口,你可以用方法setContentView(View)将自己的UI放 到里面。然而活动通常以全屏的方式展示给用户,也可以以浮动窗口或嵌入在另外一个活动中。有两个方法是几乎所有的Activity子类都实现的:
onCreate(Bundle): 初始化你的活动(Activity),比如完成一些图形的绘制。最重要的是,在这个方法里你通常将用布局资源(layout resource)调用setContentView(int)方法定义你的UI,和用findViewById(int)在你的UI中检索你需要编程地 交互的小部件(widgets)。setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关 操作,我们的操作会被包装成为一个意图,然后这个意图对应有相关的activity进行处理。
onPause():处理当离开你的活动时要做的事情。最重要的是,用户做的所有改变应该在这里提交(通常ContentProvider保存数据)。
更多的关于Activity类的详细信息此系列以后的文章将做介绍,如果你想了解更多请参阅相关文档。
android.os.Bundle 类:从字符串值映射各种可打包的(Parcelable)类型(Bundle单词就是捆绑的意思,所有这个类很好理解和记忆)。如该类提供了公有方法—— public boolean containKey(String key),如果给定的key包含在Bundle的映射中返回true,否则返回false。该类实现了Parceable和Cloneable接口,所以 它具有这两者的特性。
1.2、gen文件夹
该 文件夹下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R.java文件中定义了一个类——R,R类 中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引。看我们的HelloWorld项目是不是如此,如下图:
图2、R.java对应res
通过R.java我们可以很快地查找我们需要的资源,另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。
1.3、Android 2.1文件夹
该 文件夹下包含android.jar文件,这是一个Java 归档文件,其中包含构建应用程序所需的所有的Android SDK 库(如Views、Controls)和APIs。通过android.jar将自己的应用程序绑定到Android SDK和Android Emulator,这允许你使用所有Android的库和包,且使你的应用程序在适当的环境中调试。例如上面的HelloWorld.java源文件中 的:
import android.app.Activity; import android.os.Bundle;
这里两行代码就是从android.jar导入包。
1.4、assets
包含应用系统需要使用到的诸如mp3、视频类的文件。
1.5、res文件夹
资源目录,包含你项目中的资源文件并将编译进应用程序。向此目录添加资源时,会被R.java自动记录。新建一个项目,res目录下会有三个子目录:drawabel、layout、values。
drawabel-?dpi:包含一些你的应用程序可以用的图标文件(*.png、*.jpg)
layout:界面布局文件(main.xml)与WEB应用中的HTML类同,没修改过的main.xml文件如下(HelloWorld的就没有修改过):
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
values:软件上所需要显示的各种文字。可以存放多个*.xml文件,还可以存放不同类型的数据。比如arrays.xml、colors.xml、dimens.xml、styles.xml
1.6、AndroidManifest.xml
项目的总配置文件,记录应用中所使用的各种组件。这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网 服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此 Activity。AndroidManifest.xml将包含如下设置:application permissions、Activities、intent filters等。
HelloWorld项目的AndroidManifest.xml如下所示:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="helloworld.test" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloWorld" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
关于AndroidManifest.xml现在就讲这么多,此系列后面的文章将单独详细介绍。
1.7、 default.properties
记录项目中所需要的环境信息,比如Android的版本等。
HelloWorld的default.properties文件代码如下所示,代码中的注释已经把default.properties解释得很清楚了:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Indicates whether an apk should be generated for each density.
split.density=false
# Project target.
target=android-7
‘叁’ 安卓手机根目录下的各个文件夹有什么作用
作用:
1.res:资源文件。
2.drawable:布局文件。
3.layout:布局文件。
4.anim:动画效果文件。
5.values:取值、字符串等。
6.src:代码,至于src内部的目录名称,取决于具体项目结构。
7.libs:库文件。
‘肆’ Android项目在Eclipse中的目录结构不见了怎么弄出来
1.在空白处右击,选择new -> Project...,选择Android下面的Android Project;
2.选择create Project from existing source;
3.下面有个选择路径的Location就变得可以使用了,你点那个Browse;
4.选择好你的Android项目放置的位置,就可以了。
你可以在菜单选择window -> show view -> package explorer,如果还是没有,你就先把你那上面有的界面都先最小化,目录结构就出来了。
‘伍’ 安卓程序结构目录有哪些每个目录的作用是什么
和电脑安装程序,然后查找位置一样。你安装在SD卡你就去SD里找,一般都是英文的。比如:你安装了网络的应用,那么你SD卡根目录里就会有这个标题的文件夹。腾讯产品是tencent酷我音乐kuwomusic希望能帮助你。
‘陆’ android studio集成cordova和安装cordova有什么不同
一般Android项目结构和目录结构一样,是这样的:
MyApp
|--build.gradle
|--settings.gradle
|--app
|-- build.gradle
|-- build
|-- libs
|-- src
|-- main
|--java
| |-- com.package.myapp
|--res
|-- drawable
|-- layout
|-- etc
由Cordova创建的项目的目录结构是这样的(项目结构见上图)
看起来很乱是不是。但是不影响使用,实际上也没必要非要改成标准格式。因为Gradle已经帮我们在配置脚本中写好了相关配置,它知道如何找到需要的文件。
按照标准的Gradle教程,项目即使没有任何模块(mole),Android Studio也会为我们生成一个对应于项目的build.gradle脚本文件的。而观察图1,Android Studio打开的Cordova项目中却没有,编译构建工作也可以正常进行,说明这个文件不是必须的。
它是在andorid、CordovaLib模块中的build.gradle脚本中的android任务的sourceSets的main属性,其中定义了Android Studio项目目录结构和真实目录的对应关系。比如android模块下的build.gradle是这样的:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
详细请参考G文第一篇 '保持旧的Eclipse文件结构' 部分。
可以看到,Android Studio中目录的逻辑结构和系统中的文件夹结构是分离的,依靠的就是Gradle的配置能力。对比标准的项目目录结构,Cordova项目把android模块直接放在了项目的根下,而不是其他模块那样(比如CordovaLib模块)作为子文件夹存在,这也说明了它为什么不需要项目的build.gradle脚本,因为项目的脚本就是android模块的脚本。之后添加的模块,都是作为根目录的子文件夹存在的。
此外还有一个多出来的cordova.gradle,以及和G文名称不一致的local.properties。
Gradle脚本的详细说明
上面部分让我们对用Android Studio打开的Cordova项目有了些感性了解。它有其自已的独特性:一方面Cordova创建的项目有自己的Gradle配置脚本,另一方面又保留了自己独特的结构。接下来让我们对Gradle脚本的各个部分作较为详细的了解,同样的基础知识请参考G文或《Gradle for Android》一书。
我们看到Gradle脚本相关的文件有build.gradle(CordovaLib模块)、build.gradle(android模块)、cordova.gradle(CordovaLib模块)、settings.gradle(项目)、local.properties(SDK Location)。看起来有些不一样。
不过没关系,我们知道Gradle构建时首先要去找build.gradle脚本的。通过上面的项目结构知道,首先执行的应该是逻辑上属于android模块,但实际上位于项目根目录下的build.gradle。就从这里开始。
android模块的build.gradle脚本
打开build.gradle。首先看到一些Cordova生成的一些注释。原文就不照抄了,大意是一些授权说明信息。最后的单行注释很关键:"生成文件!请不要编辑!"。 虽然不能编辑,但一则其他的文件并没有这么写,二则做为入口文件,我们还是需要对它做一个了解。
注释后紧接着就是buildscript方法。在它里面首先是repositories方法,它告诉我们使用的库是mavenCentral。接下来是依照已经在本地安装的gradle的版本选择使用的Gradle插件版本,并且语句上面有注释可以参考,以后几乎在每条语句上面都有注释帮助我们理解并告诉我们相关参考资料的位置。
// 列表1-1。
buildscript {
repositories {
mavenCentral()
}
// Switch the Android Gradle plugin version requirement depending on the
// installed version of Gradle. This dependency is documented at
// http://tools.android.com/tech-docs/new-build-system/version-compatibility
// and https://issues.apache.org/jira/browse/CB-8143
if (gradle.gradleVersion >= "2.2") {
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0+'
}
} else if (gradle.gradleVersion >= "2.1") {
dependencies {
classpath 'com.android.tools.build:gradle:0.14.0+'
}
} else {
dependencies {
classpath 'com.android.tools.build:gradle:0.12.0+'
}
}
}
随后又使用了一个repositories任务。注释说:允许插件通过build-extras.gradle声明Maven依赖。通过extra这个名字,以及前面不要编辑的警告,它的作用可能是对这个build.gradle文件的修改或补充。其实在下面的代码中可以看到更多这方面的信息。
// 列表1-2。
repositories {
mavenCentral()
}
接下来有一个wrapper任务,查阅文档得知它用于定制Gradle Wrapper的。如果对Wrapper不了解,请参考《G》文的第一篇"使用Gradle Wrapper"部分。
// 列表1-3。
task wrapper(type: Wrapper) {
gradleVersion = '2.2.1'
}
接下来定义了一个ext属性,其中定义了一些额外属性。注释也说明了其中定义的属性需要通过环境变量、build-extras.gradle或gradle.properties设置。
ext属性中首先引用了cordova.gradle。这样就知道项目中这个文件用在哪里了。但下面并没有用到它。通过后面的代码推测它可能是供build-extras.gradle调用的。接下来一系列条件判断语句分别定义了一些属性并把它们初为null。这些属性是都以cdv开头,表示一些Cordova构建属性。接下来的代码中会看到它们的作用。最后定义了一个cdvPluginPostBuildExtras数组变量,用来向里面追加Gradle插件扩展。
// 列表1-4。
ext {
apply from: 'CordovaLib/cordova.gradle'
// The value for android.compileSdkVersion.
if (!project.hasProperty('cdvCompileSdkVersion')) {
cdvCompileSdkVersion = null;
}
// The value for android.buildToolsVersion.
if (!project.hasProperty('cdvBuildToolsVersion')) {
cdvBuildToolsVersion = null;
}
// Sets the versionCode to the given value.
if (!project.hasProperty('cdvVersionCode')) {
cdvVersionCode = null
}
// Sets the minSdkVersion to the given value.
if (!project.hasProperty('cdvMinSdkVersion')) {
cdvMinSdkVersion = null
}
// Whether to build architecture-specific APKs.
if (!project.hasProperty('cdvBuildMultipleApks')) {
cdvBuildMultipleApks = null
}
// .properties files to use for release signing.
if (!project.hasProperty('')) {
= null
}
// .properties files to use for debug signing.
if (!project.hasProperty('cdvDebugSigningPropertiesFile')) {
cdvDebugSigningPropertiesFile = null
}
// Set by build.js script.
if (!project.hasProperty('cdvBuildArch')) {
cdvBuildArch = null
}
// Plugin gradle extensions can append to this to have code run at the end.
cdvPluginPostBuildExtras = []
}
接下来这部分代码,首先判断build-extras.gradle文件是否存在,如果存在则把它应用到构建脚本中。下面的判断语句检查build-extras.gradle是否定义了列表1-4的属性。如果有就使用build-extras.gradle中的,如果没有,则按下面语句设置:
// 列表1-5。
// Set property defaults after extension .gradle files.
if (ext.cdvCompileSdkVersion == null) {
ext.cdvCompileSdkVersion = privateHelpers.getProjectTarget()
}
if (ext.cdvBuildToolsVersion == null) {
ext.cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools()
}
if (ext.cdvDebugSigningPropertiesFile == null && file('debug-signing.properties').exists()) {
ext.cdvDebugSigningPropertiesFile = 'debug-signing.properties'
}
if (ext. == null && file('release-signing.properties').exists()) {
ext. = 'release-signing.properties'
}
// Cast to appropriate types.
ext.cdvBuildMultipleApks = cdvBuildMultipleApks == null ? false : cdvBuildMultipleApks.toBoolean();
ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? null : Integer.parseInt('' + cdvMinSdkVersion)
ext.cdvVersionCode = cdvVersionCode == null ? null : Integer.parseInt('' + cdvVersionCode)
上述代码表示如果没有设置列表1-4中的属性时设置它们,其中调用了cordova.gradle脚本中的方法。如前所述之后会说明这些变量的作用。
接下来这段代码,注释告诉我们,要让cdvBuild的任务依赖于debug/arch-specific,即平台相关,解决的是不同平台构建的问题。首先分成debug和release版,然后根据前面遇到过的cdvBuildMultipleApks和cdvBuildArch的变量判断是否是跨平台构建,如果是则返回一个根据架构名生成的结果。注意到这个cdvBuildArch变量,在上面列表1-4的注释中标明它由build.js设置。这个脚本位于项目目录的cordova/lib/文件夹中,没有纳入到构建中,是cordova cli构建脚本,在这里先不做探讨。
def computeBuildTargetName(debugBuild) {
def ret = 'assemble'
if (cdvBuildMultipleApks && cdvBuildArch) {
def arch = cdvBuildArch == 'arm' ? 'armv7' : cdvBuildArch
ret += '' + arch.toUpperCase().charAt(0) + arch.substring(1);
}
return ret + (debugBuild ? 'Debug' : 'Release')
}
// Make cdvBuild a task that depends on the debug/arch-sepecific task.
task cdvBuildDebug
cdvBuildDebug.dependsOn {
return computeBuildTargetName(true)
}
task cdvBuildRelease
cdvBuildRelease.dependsOn {
return computeBuildTargetName(false)
}
接下来定义了一个任务,显然作用是输出列表1-4以及后面定义过的属性值。
task cdvPrintProps << {
println('cdvCompileSdkVersion=' + cdvCompileSdkVersion)
println('cdvBuildToolsVersion=' + cdvBuildToolsVersion)
println('cdvVersionCode=' + cdvVersionCode)
println('cdvMinSdkVersion=' + cdvMinSdkVersion)
println('cdvBuildMultipleApks=' + cdvBuildMultipleApks)
println('=' + )
println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile)
println('cdvBuildArch=' + cdvBuildArch)
println('computedVersionCode=' + android.defaultConfig.versionCode)
android.proctFlavors.each { flavor ->
println('computed' + flavor.name.capitalize() + 'VersionCode=' + flavor.versionCode)
}
}
接下来就是构建的核心部分,每个使用android插件构建都会有的android方法。里面对android的构建定义了一些配置。这些配置的做用可以参考相关文章,这里就不赘述了。之后是在任务准备就绪后,对需要验证的任务进行验证。再下来定义的addSigningProps函数被android方法调用,用来在需要验证时,为属性文件添加验证配置。最后配置了构建后要执行的方法,并且添加了在自定义配置文件build-extras.gradle中配置的构建后执行方法的入口。
总结
综上,在Cordova项目中的android文件夹中的默认两个模块的内容作为容器和插件的源代码,有其相对于普通Gradle Android特殊的目录结构。android模块把CordovaLib和web内容结合在一起生成Crodova应用,android模块和CordovaLib通过使用共同的配置变量,保证了包括编译SDK版本在内的一致性,并提供了额外配置的入口。但万变不离其宗,这一切都是建立在了解Gradle构建工具的基础上的。
望采纳,谢谢
‘柒’ 如何将android studio 2.2的目录结构与eclipse一致
下面是studio项目的目录结构: 打开src 目录 进入main 其实library的所有代码都在这里面了 而eclipse的结构是这样的 其实studio项目中java目录里面的代码对应的是eclispe项目中的src目录中的代码。而studio中src目录里面包括整个项目的所有代码包括资源文件和xml。 所以: 直接将studio目录里面的src ->main 目录里面的java文件夹名改为src , 然后将main里面的内容(不包括main)拷贝到一个新的以你项目名称命名的文件夹中 然后用eclipse导入就可以了。
‘捌’ android应用工程文件结构有哪些
在Eclipse中,一个基本的Android项目的目录结构如图所示。
1. src目录--程序文件
在里面保存了程序员辛辛苦苦直接编写的程序文件。和一般的Java项目一样,src目录下保存的是项目的所有包及源文件(.java),res目录下包含了项目中的所有资源。例如,程序图标(drawable)、布局文件(layout)和常量(values)等。不同的是,在Java项目中没有gen目录,也没有每个Android项目都必须有的AndroidManifest.xml文件。
.java格式的文件是在建立项目时自动生成的,这个文件是只读模式,不能更改。R.java文件是定义该项目所有资源的索引文件。
2. AndroidManifest.xml文件--设置文件
AndroidManifest.xml是一个控制文件,在里面包含了该项目中所使用的Activity、Service、Receiver
‘玖’ 安卓手机根目录下的各个文件夹的作用,麻烦详细介绍。
1、HelloWorld项目的目录结构
1.1、src文件夹
1.2、gen文件夹
1.3、Android 2.1文件夹
1.4、assets
1.5、res文件夹
1.6、AndroidManifest.xml
1.7、default.properties
图1、HelloWorld项目目录结构
下面将分节介绍上面的各级目录结构。
1.1、src文件夹
顾名思义(src, source code)该文件夹是放项目的源代码的。打开HelloWorld.java文件会看到如下代码:
package helloworld.test;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
可以知道:我们新建一个简单的HelloWorld项目,系统为我们生成了一个HelloWorld.java文 件。他导入了两个类android.app.Activity和android.os.Bundle,HelloWorld类继承自Activity且重 写了onCreate方法。
以下说明针对没有学过Java或者Java基础薄弱的人
@Override
在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。
例如,public void onCreate(Bundle savedInstanceState){…….}这种写法是正确的,
如果你写成public void oncreate(Bundle savedInstanceState){…….}这样编译器回报如下错误——
The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,
以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)
而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。
android.app.Activity类:因为几乎所有的活动 (activities)都是与用户交互的,所以Activity类关注创建窗口,你可以用方法setContentView(View)将自己的UI放 到里面。然而活动通常以全屏的方式展示给用户,也可以以浮动窗口或嵌入在另外一个活动中。有两个方法是几乎所有的Activity子类都实现的:
onCreate(Bundle): 初始化你的活动(Activity),比如完成一些图形的绘制。最重要的是,在这个方法里你通常将用布局资源(layout resource)调用setContentView(int)方法定义你的UI,和用findViewById(int)在你的UI中检索你需要编程地 交互的小部件(widgets)。setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关 操作,我们的操作会被包装成为一个意图,然后这个意图对应有相关的activity进行处理。
onPause():处理当离开你的活动时要做的事情。最重要的是,用户做的所有改变应该在这里提交(通常ContentProvider保存数据)。
更多的关于Activity类的详细信息此系列以后的文章将做介绍,如果你想了解更多请参阅相关文档。
android.os.Bundle 类:从字符串值映射各种可打包的(Parcelable)类型(Bundle单词就是捆绑的意思,所有这个类很好理解和记忆)。如该类提供了公有方法—— public boolean containKey(String key),如果给定的key包含在Bundle的映射中返回true,否则返回false。该类实现了Parceable和Cloneable接口,所以 它具有这两者的特性。
1.2、gen文件夹
该 文件夹下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R
‘拾’ Android项目开发详解的目录
前言
第1章 Android开发平台的构建
1.1 Android开发行业发展前景
1.1.1 Android概述
1.1.2 Android行业需求前景
1.1.3 Android就业前景
1.2 开发平台的搭建
1.3 体验Android开发之旅
1.3.1 创建HelloAndroid项目
1.3.2 模拟器配置及运行HelloAndroid
1.3.3 剖析HelloAndroid项目结构
1.4 设置Android模拟器中文环境
1.5 关于本书
第2章 Android项目开发-以手机订票系统为例
2.1 项目需求概述
2.2 项目功能分解
2.2.1 程序主界面功能
2.2.2 登录功能
2.2.3 注册功能
2.2.4 选择功能
2.2.5 查询功能
2.2.6 信息列表功能
2.2.7 List详情功能
2.2.8 用户信息填写与选择功能
2.2.9 预订成功功能
2.3 项目后台技术选择
2.3.1 ASP网页特点
2.3.2 ASP文件的体系结构
2.3.3 ASP的工作原理
2.3.4 IIS的安装与配置
第3章 程序主界面
3.1 基础控件讲解
3.1.1 网格视图
3.1.2 提示
3.2 重点剖析
3.2.1 数据适配器
3.2.2 Android事件处理机制
3.2.3 Android页面切换
3.3 程序主界面功能实现
3.3.1 程序主界面View实现
3.3.2 程序主界面Control实现
3.3.3 程序主界面Help实现
第4章 登录功能实现
4.1 基础控件讲解
4.1.1 文本框
4.1.2 文本编辑框
4.1.3 单选按钮
4.1.4 按钮控件
4.2 重点剖析
4.2.1 Android长度单位
4.2.2 Android布局的用法
4.2.3 SharedPreferences的使用
4.2.4 Android解析XML的方法
4.2.5 Android如何与后台通信
4.3 登录功能实现
4.3.1 登录界面View实现
4.3.2 登录功能Model用户信息类实现
4.3.3 登录功能Control实现
4.3.4 登录功能Help实现
4.3.5 登录后台ASP实现
第5章 注册功能实现
5.1 重点剖析
5.1.1 Activity页面传值
5.1.2 使用正则表达式进行信息验证
5.2 注册功能实现
5.2.1 注册界面View实现
5.2.2 注册功能Control实现
5.2.3 注册后台ASP实现
第6章 选择功能实现
6.1 基础控件讲解
6.1.1 自动匹配
6.1.2 列表视图
6.2 重点剖析
6.2.1 ListAdapter+HashMap+ArrayList的使用
6.2.2 SimpleCursorAdapter的使用
6.3 选择功能实现
6.3.1 选择界面View实现
6.3.2 选择功能Model类实现
6.3.3 选择功能Control实现
6.3.4 选择功能后台ASP实现
第7章 查询功能实现
7.1 基础控件讲解
7.1.1 图片视图
7.1.2 图片按钮
7.1.3 下拉列表
7.1.4 日期和时间控件
7.1.5 菜单
7.1.6 对话框
7.1.7 进度条
7.2 重点剖析
7.3 查询功能实现
7.3.1 查询界面View实现
7.3.2 查询功能Control实现
7.3.3 查询功能ASP实现
第8章 信息列表功能实现
8.1 重点剖析
8.1.1 日期格式处理与转换
8.1.2 带图片多行ListView子项
8.2 信息列表功能实现
8.2.1 信息列表功能View实现
8.2.2 信息列表功能 Model类实现
8.2.3 信息列表功能Control实现
第9章 List详情功能实现
9.1 基础控件讲解
9.1.1 文字交换器
9.1.2 图片交换器
9.2 List详情功能实现
9.2.1 List详情界面View实现
9.2.2 List详情功能Control实现
第10章 用户信息选择与填写功能实现
10.1 基础控件讲解
10.1.1 复选框
10.1.2 卷轴视图
10.2 重点剖析
10.2.1 如何动态增加控件
10.2.2 多行文本滚动实现
10.2.3 用户身份证的验证
10.3 用户信息选择与填写(机票预订)实现
10.3.1 机票预订View实现
10.3.2 机票预订Model实现
10.3.3 机票预订功能Control实现
10.3.4 机票预订后台ASP实现
第11章 订购成功实现
11.1 基础控件讲解
11.1.1 状态栏提示
11.1.2 拖动条
11.1.3 循环播放图片列表效果
11.2 订购成功实现
11.2.1 机票订购成功View实现
11.2.2 机票订购成功功能Control实现
第12章 界面优化、程序发布与真机环境测试
12.1 界面效果优化
12.2 程序自适应处理
12.3 设置程序Logo
12.4 Android单元测试
12.5 项目在不同版本的Android手机上的安装与运行
第13章 其他Andorid专题开发
13.1 专题一:Andorid数据存储
13.1.1 Files存储
13.1.2 NetWork存储
13.1.3 SQLite编程详解
13.1.4 Content Providers数据存储
13.2 专题二:Android多媒体开发
13.2.1 播放音乐
13.2.2 播放视频
13.3 专题三:外部接口编程
附录
附录A IIS部署及网站发布
附录B 91助手的安装与使用
附录C DDMS常用功能详解
参考文献