一.项目结构
Android Studio(以下均简称AS)的项目结构默认为Android模式的项目结构,但是Android模式的项目结构(图1.1)
图1.1
并非项目真正的结构,只是方便用户开发,若要查看真是目录结构,可以切换置Project模式(图1.2)。
图1.2
二.文件目录详解
图2.1是一张Project模式下的文件目录结构。
图2.1
下面我们就来逐一分析个文件/目录的作用
1. .gradle和.idea
这两个目录都是AS自行生成的文件,请不要去自行编辑。
2. app
这个文件一般是我们主要要用到的文件目录,详细的目录结构见图2.2
图2.2
-build
AS在编译时自动生成的文件。
-libs
使用的第三方jar包将被放入此路径。
-androidTest
编写测试用例,可以对项目进行一些自动化的测试。
-java
我们写的java代码被放在这个路径下。
-res
资源文件,我们用到的图片、布局、字符串都被放在这个路径下。
图2.3
我们这里说下res下各文件夹的作用
--drawable:图片
--layout:布局文件
--mipmap-(*)hdpi:应用图标
--values:串、样式、颜色设置
我们直到各个文件夹的作用了,那么如何引用这些资源呢?
我们打开res/values/string.xml查看到该文件的代码,如下:
<resources>
<string name="app_name">helloWorld</string>
</resources>
这里定义了一个程序名的字符串,我们可以用两种方法来引用它:
*在代码中通过R.string.hello_world来获得该串引用;
*在xml中通过@string/hello_world来获得该串引用;(见如下AndroidManifest.xml文件的调用)
-AndroidManifest.xml
整个安卓项目的配置文件,你的程序用到的四大组件都要在这里注册。关于AndroidManifest.xml文件的详细说明见如下分 析。(在看以下分析前建议先看完res资源文件介绍)。
这份是AndroidManifest.xml的代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld">
<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
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>
相关参数说明:
--android:icon:项目的应用图标
--android:label:项目的名称
-test
用来编写Unit Test,项目测试的另一种方法(之前提到了androidTest)。
-.gitnore
将指定的文件或目录排除在版本控制范围外。
-app.iml
IDEA自动生成的文件。
-build.gradle
app模块的gradle构建脚本。
-proguard-rules.pro
代码的混淆规则,用于防破解。
3. build
项目编译自动生成的文件
4. gradle
包含gradle wrapper的配置文件,联网时系统会自动下载gradle。
5. .gitignore
涉及版本控制,后面会提到。
6. build.gradle
全局的gradle脚本,不需要修改。
7. gradle.properties
全局的gradle的配置文件
8. gradlew和gradlew.bat
用来在命令行界面执行gradle命令的,前者是mac/linux的,后者是windows的。
9. helloWorld.iml
IDEA特征文件
10. local.properties
本机的Android SDK路径。
11. settings.gradle
指定项目中所有引入的模块。
三.MainActivity的函数执行
先上代码
package com.example.helloworld;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
这里要说明的有以下几点:
AppCompatActivity 这是一个向下兼容的Activity(Activity是Android提供活动的基类)。
onCreate() 这是一个活动创建时必须执行的方法。
setContentView() 调用此方法给当前活动引入一个activity_main的布局。
关于布局文件都是在res/layout下的。