1. 程式人生 > >Android開發(1)--初識(隨記)

Android開發(1)--初識(隨記)

在這裡插入圖片描述
以下內容大部分是閱讀《第一行程式碼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,後面數字是版本號。