以下內容大部分是閱讀《第一行代碼Android》所記的筆記。
1、基本認識
Android系統的四大組件:活動(Activity)、服務(Service)、廣播接收器(Broadcast )和內容提供器(Content Provider)
AndroidManifest.xml – 整個Android項目的配置文件,程序中定義的四大組件都需要在這個文件裏註冊。還可以在這裏給應用程序添加權限聲明。
這段代碼表示對helloworldActivity這個活動進行註冊,沒有在AndroidManifest.xml這裏註冊的活動是不能使用的。
<intent-filter>
裏面的兩行代碼非常重要
<action android:name="android.intent.action.MAIN" />
和<category android:name="android.intent.category.LAUNCHER" />
表示helloworldActivity是這個項目的主活動,在手機上點擊應用圖標,首先啓動的就是這個活動。
活動是Android應用程序的門面,凡是在應用中你能看到的東西,都是放在活動中的。
helloworldActivity是繼承自AppCompatActivity的,這是一種向下兼容的Activity,可以講Activity在各個系統版本中增加的特性和功能最低兼容到Android2.1系統。
helloworldActivity中有一個onCreate()
方法,是一個活動被創建時必定要執行的方法。
Andriod程序的設計講究邏輯和視圖分離,因此是不推薦在活動中直接編寫界面的,更加通用的一種做法是,在佈局文件中編寫界面,然後在活動中引入進來。
2、項目中的資源–res目錄
項目中使用到的所有圖片、佈局、字符串等資源都要存放在這個目錄下。
- drawable–存放圖片
- mipmap–存放應用圖標
- layout–存放佈局文件
- values–存放字符串、樣式、顏色等配置
相同類型開頭的文件夾有多個,是爲了讓程序能夠更好的兼容各種設備。
在製作程序的時候最後能夠給同一張圖片提供幾個不同分辨率的版本,分別放在drawable-hdpi、drawable-xhdpi、drawable-xxhdpi
等文件夾下,當程序運行的時候,會自動根據當前運行設備分辨率的高低選擇加載那個文件夾下的圖片。
繼續看,在onCreate()
方法的第二行調用了setContentView()
方法,就是這個方法給當前的活動引入了一個helloworld_layout佈局,Hello World!
這句話就是在這裏面定義的。佈局文件都是定義在res/layout
目錄下,裏面可以看到helloworld_layout.xml
文件。
下面看這些資源是怎麼使用的:
打開res/values/strings.xml
文件
這裏定義了一個應用程序名的字符串,有下面兩種方法來引用它:
- 在代碼中通過
R.string.app_name
可以獲得該字符串的引用; - 在XML中通過
@string/app_name
可以獲得該字符串的引用。
上面string部分是可以替換的,如果是引用圖片資源就替換成drawable,如果是應用圖標就替換成mipmap,如果引用的是佈局文件就替換成layout,以此類推。
下面看具體的例子:
打開AndroidManifest.xml
文件,其中有:
其中,應用圖標就是通過android:icon
屬性來指定的,應用的名稱是通過android:label
來指定的。
所以,如果想修改應用的圖標或名稱,就從這裏進行修改。
3、詳解build.gradle文件
Android Studio是採用Gradle來構建項目的。
build.gradle是app模塊的gradle構建腳本,這個文件中會指定很多項目構建相關的配置。
在項目中有兩個build.gradle
文件,一個在最外層目錄下,一個實在app目錄下。
先看最外層的build.gradle
文件:
通常情況下是不需要修改這個文件的,除非想添加一些全局的項目構建配置。
這些代碼都是自動生成的,可以先忽略語法,看最關鍵的部分。
(1)兩處repositories閉包中都聲明瞭jcenter()
這行配置,這是一個代碼的託管倉庫,很多Android開源項目都會選擇將代碼託管到jcenter上,聲明瞭這行配置後
,就可以在項目中輕鬆的引用任何jcenter上的開源項目了。
(2)在dependencies閉包中使用classpath聲明瞭一個Gradle插件。因爲Gradle並不是專門爲構建Android項目而開發的,Java、C++等很多種項目都可以使用Gradle來構建。我們想要用它來構建Android項目,則需要聲明com.android.tools.build:gradle:3.1.2
,後面數字是版本號。