Android项目目录结构简单介绍
这里选用java创建的项目
在Android开发中,一个项目可以包含好一个或数个module,一个module对应着一个安卓程序。
Android模式下
点击方框处,选择Android:
可以看到主要有app文件夹和Gradle Script,其中app就是我们目前正在开发的module,Gradle Script与我们编写的源代码关系不大,尚不需要过多了解。
-
manifests
该目录主要存放安卓项目的全局描述文件
-
java
该目录下主要包含我们编写的源码文件,java类文件都是放在此节点中
-
res
用于存放资源文件,比如布局文件、图片等。
drawable目录下主要放置位图文件(png、gif等)、9 Patch图片文件和Shape Drawable等xml资源文件。
layout目录下用于存储程序的布局文件。
mipmap目录用于存放项目中应用的启动图标,实际它由多个子目录构成:mipmap-mdpi、mipmap-hdpi、mipmap-xhdpi、mipmap-xxhdpi、mipmap-xxxhdpi(越往后存放的图片分辨率越大)
注意:需要适应屏幕分辨率的图片推荐防砸imipmap目录中,可以提高显示性能、占用内存更少
value目录主要保存字符串资源、样式资源、尺寸资源、颜色资源
该项目模式下的项目架构显示较为直观,但是却不够全面。
Project模式下
切换到Project模式下看项目目录:
-
.gradle和**.idea**
这两个目录下放置的都是Android Studio自动生成的一些文件,我们无须关心,也不要去手动编辑。
-
app
项目中的代码、资源等内容都是放置在这个目录下的,后面的开发工作也基本是在这个目录下进行的。
-
build
目前该项目尚未编译,所以未含有build目录。这个目录主要包含了一些在编译时自动生成的文件,不需要过多关心。
-
gradle
这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。Android Studio默认就是启用gradle wrapper方式的,如果需要更改成离线模式,可以点击Android Studio导航栏→File→Settings→Build, Execution, Deployment→Gradle,进行配置更改。
-
.gitignore
这个文件是用来将指定的目录或文件排除在版本控制之外的。
-
build.gradle
这是项目全局的gradle构建脚本,通常这个文件中的内容是不需要修改的。
-
gradle.properties
这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。
-
gradlew和gradlew.bat
这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。
-
HelloWorld.iml
iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,我们不需要修改这个文件中的任何内容。
-
local.properties
这个文件用于指定本机中的Android SDK路径,通常内容是自动生成的,我们并不需要修改。除非你本机中的Android SDK位置发生了变化,那么就将这个文件中的路径改成新的位置即可。
-
settings.gradle
这个文件用于指定项目中所有引入的模块。由于HelloWorld项目中只有一个app模块,因此该文件中也就只引入了app这一个模块。通常情况下,模块的引入是自动完成的,需要我们手动修改这个文件的场景可能比较少。
一些文件内容的解释
AndroidManifest.xml
现在我们打开AndroidManifest.xml文件:
可以看到如下配置:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.firstandroidapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
最上面的三行代码为默认生成,我们主要了解的是application内的内容。
application标签主要用于配置整个应用的一些属性,比如配置应用的图标、应用的标签等等。另外application标签还应当包括activity标签,我们默认创建了一个activity,名称叫做**.MainActivity**。
在这个activity标签中我们可以看到还有四行代码,这四行代码的作用就是将当前的**.MainActivity**配置成应用程序的入口。
MainActivity
我们继续看下一个目录:java目录。java目录下主要用于显示安卓应用当中所有的包以及java源文件。
点击第一个包,我们可以看到MainActivity类,这个就是默认生成的activity。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
我们仔细看上面的代码:可以看到定义了一个继承了AppCompatActivity的MainActivity类。
在安卓当中,一个Activity就相当于一个java类
继续往里看,类里面重写了一个onCreate方法。
在项目开发中,针对Activity的代码,多数是写在onCreate里
继续往里看,setContentView方法指定了当前Activity要显示的布局文件,可以看到当前的参数为R.layout.activity_main,R表示安卓项目生成的R文件,其内含有项目内资源的索引,我们可以通过该索引来引用资源。该参数表示引用R文件下的layout资源的activity_main索引。
注意,索引名称应当和资源文件的名称一致
如果R文件爆红,那么在编译器build目录下选择Clean Project即可。
activity_main.xml
点开res下面的layout目录,就可以看到该布局文件:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
TextView标签定义了我们看到的文本框,内部定义了文本框的一些基本属性。