
切換專案結構模式

Project模式的專案結構
我們將專案切換成Project模式,這就是真實的目錄結構,
- .gradle和.idea
這兩個目下放置的都是Android Studio自動生成的一些檔案,我們無須關系,也不要去手動編輯, - app
專案中的代碼、資源等內容幾乎都是放置在這個目錄下的, - build
它主要包含了一些在編譯時自動生成的檔案,不需要過多關心, - gradle
這個目錄下包含了gradle wrapper的組態檔, - .gitignore
這個檔案是用來指定的目錄或檔案排除在版本控制之外的, - build.gradle
這是專案全域的gradle構建腳本,通常不需要修改, - gradle.properties
這個檔案是全域的gradle組態檔,在這里配置的屬性將會影響到專案中所有的gradle編譯腳本, - gradlew和gradlew.bat
這兩個檔案是用來在命令列界面執行gradle命令的,其中gradlew是在Linux或者Mac系統中使用的,gradlew.bathi在Windows系統中使用的, - HelloWorld.iml
iml檔案是所有IntelliJ IDEA專案都會自動生成的一個檔案(Android Studio是基于IntelliJ IDEA開發的),用于標識這是一個IntelliJ IDEA專案,我們不需要修改這個檔案中的任何內容, - local.properties
這個檔案用于指定本機中的Android SDK路徑的,通常內容都是自動生成的, - settings.gradle
這個檔案用于指定專案中所有引入的模塊,由于HelloWorld專案中只有一個app模塊,因此該檔案中也就只引入了app這一個模塊,通常情況下引入都是自動完成的,
這個專案的目錄介紹完畢了,除了app目錄之外的,大多數的檔案和目錄都是自動生成的,app目錄才是我們的重點,

- build
這個目錄和外層的build目錄類似,主要也是包含了一些編譯時自動生成的檔案,不過它里面的內容會更多更復雜,我們不需要過多關心, - libs
如果你的專案中使用到了第三方jar包,就需要把這些jar包都放到libs目錄下,放在這個目錄下的jar包都會被自動添加到構建路徑里去, - androidTest
此處是用來撰寫Android Test測驗用例的,可以對專案進行一些自動化測驗, - java
是放置我們所有java代碼的地方, - res
這個目錄下內容就有點多了,簡單說就是你在專案中使用到的所有圖片、布局、字串等資源都要存放在這個目錄下,
- 圖片放在drawable目錄下
- 布局存放到layout目錄下
- 字串放到values目錄下
- AndroidMainfest.xml
這是你整個Android專案的組態檔,你在程式中定義的所有四大組件都要在這個檔案夾里注冊,另外還可以在這個檔案夾中給應用程式添加權限宣告, - test
此處是用來撰寫Unit Test測驗用例的,是對專案進行自動化測驗的另一種方式, - .gitignore
這個檔案用于將app模塊內的指定的目錄或檔案排除在版本控制器之外,作用和外層的.gitignore檔案類似, - app.iml
IntelliJ IDEA專案自動生成的檔案,我們不需要關心或修改這個檔案中的內容, - build.gradle
這個app模塊的gradle構建腳本,在這個檔案中會指定很多專案構建相關的配置, - proguard-rules.pro
這個檔案用于指定專案代碼的混淆規格,當代碼開發完成后打包成安裝包檔案,如果不希望代碼被別人破解,通常會將代碼進行混淆,從而讓破解者難以閱讀,
這樣整個專案的目錄結構就介紹完了,
接下來我們一起分析一下HelloWorld專案究竟是怎么運行起來的吧,首先打開AndroidManifest.xml檔案,從中可以看到如下代碼,
<activity android:name=".HelloWorldActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
這段代碼標示對HelloWorldActivity這個活動進行注冊,沒有在AndroidManifest.xml里注冊的活動是不能使用的,
其中intent-filter里的兩行代碼非常重要,
<action android:name="android.intent.action.MAIN" />和<category android:name="android.intent.category.LAUNCHER" />標示HelloWorldActivity是這個專案的主活動,在手機上點擊應用圖示,首先啟動的就是這個活動,
我們來看下HelloWorldActivity這個活動,代碼如下所示:
public class HelloWorldActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hello_world_activity);
}
}
首先我們可以看到,HelloWorldActivity是繼承自AppCompatActivity的,這是一種向下兼容的Activity,可以將Activity在各個系統版本中增加的特性和功能最低兼容到Android2.1系統,Activity是Android系統提供的一個活動的基類,我們專案中所有的活動都必須繼承它或者他的子類才能擁有活動的特性(AppCompatActivity是Activity的子類),然后可以看到HelloWorldActivity中擁有一個onCreate()方法,這個方法是一個活動唄創建時必定要執行的方法,其中兩行代碼并沒有Hello World!字樣,那么程式中顯示的Hello World!是在哪里定義的呢?
其實Android程式的設計講究邏輯與視圖分離,因此是不推薦在活動中直接撰寫界面的,更加通用的一種做法是,在布局檔案中撰寫界面,然后在活動中引入進來,可以看到,在onCreate()方法的第二行呼叫了setContentView()方法,就是這個方法給當前的活動引入了一個hello_world_layout布局,
布局檔案都定義在res/layout目錄下的,打開hello_world_layout.xml檔案并切換到Test視圖,代碼如下所示
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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=".HelloWorldActivity">
<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" />
</android.support.constraint.ConstraintLayout>
你看到就可以了,后面我們會對布局進行詳細講解的,
這樣我們就將HelloWorld專案的目錄結構以及基本的執行程序都分析完了,
本文由博客一文多發平臺 OpenWrite 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/31636.html
標籤:Android
