標籤:
書接上文,我們建立一個新的Android項目,進入Android Studio開發頁面,如:
左側為項目工具視窗,通過項目工具視窗可以管理整個項目的相關檔案
右側為代碼編輯區,我們可以在這裡進行Android程式的開發工作
底部為調試區,在調試區可以進行程式的斷點調試、日誌列印,可以監視整個程式的記憶體消耗,從而有針對性的進行效能最佳化。
首先,通過查看左側的項目工具視窗區,為大家介紹一個Android項目的基本結構:
如所示,在這裡我們只需要關注圖中app目錄下的內容:
build目錄:構建目錄,相當於Java SE開發中的bin目錄,該目錄為自動產生的,我們不需要關心裏面的內容,也沒必要改動其中的內容。
libs目錄:依賴包目錄,我們通常將第三方jar包放置在該目錄下
src目錄:src目錄是我們日常開發中經常打交道的一個目錄,其中androidTest目錄和test目錄用於測試,此處不做介紹,我們著重介紹的是main目錄,main目錄分為:java目錄、res目錄、AndroidManifest.xml檔案。
????java目錄:存放Java代碼
????res目錄:存放資源檔,其中:
????drawable存放圖片資源
????layout存放布局檔案
????mipmap也是存放映像資源的,在使用上和drawable沒什麼區別,但在縮放方面做了一定的最佳化,因此,我們通常將表徵圖存在在mipmap中。
????value存放了一些字串資源,我們在後面章節會詳細介紹
????AndroidManifest檔案:是對整個Android項目的設定檔
運行代碼,得到運行結果:
可以看到,在手機上顯示出了“Hello World”字串
以蓋房子為例,我們首先要有一張圖紙,即我們要蓋什麼樣的房子;
然後,我們要根據圖紙建造房子;當然,我們還要為房子在“有關部門”登記。
其實Android程式的運行和蓋房子的流程是類似的。
首先,查看xml布局檔案代碼:activty_main.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:id="@+id/activity_main" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:paddingBottom="@dimen/activity_vertical_margin" 8 android:paddingLeft="@dimen/activity_horizontal_margin" 9 android:paddingRight="@dimen/activity_horizontal_margin"10 android:paddingTop="@dimen/activity_vertical_margin"11 tools:context="com.rongma.helloworld.MainActivity">12 13 <TextView14 android:layout_width="wrap_content"15 android:layout_height="wrap_content"16 android:text="Hello World!" />17 </RelativeLayout>
暫時不必知道這個布局檔案代碼的含義,我們只需要知道,這個檔案是用來“告訴機器”,我們要在手機上顯示“Hello World”字串。(類比到蓋房子,其實這就是圖紙)
然後,查看Java代碼:MainActivity.java
1 public class MainActivity extends Activity {2 @Override3 protected void onCreate(Bundle savedInstanceState) {4 super.onCreate(savedInstanceState);5 setContentView(R.layout.activity_main);6 }7 }
不是什麼人都可以蓋房子的,為瞭解鎖“蓋房子”的技能,我們要讓MainActivity繼承自Activity類,即所有描述獨立頁面的類都要繼承自Activity類(或Activity的後代類),以此來獲得“蓋房子”技能。
然後,我們可以看到在onCreate方法中,調用了setContentView方法來擷取布局。其中傳入的參數為R.layout.activity_main. 這個方法用於擷取到我們的“圖紙”,並根據“圖紙”來蓋這個房子,並對房子進行操作。那麼,此處的圖紙就是R.layout.activity_main.
R.java檔案是根據應用的資源檔自動產生的Android應用字典,在這個檔案裡,我們可以找到Android布局資源、圖片資源、字串資源等相關的映射。在這裡,R.layout.activity_main 其實相當於調用了layout資源檔夾下的activity_main.xml布局檔案
最後,要將“房子”登記到“有關部門”:
Android程式的“有關部門”------AndroidManifest.xml
之所以稱AndroidManifest請單檔案為“有關部門”,因為它是整個Android應用的全域描述檔案,它說明了該應用的名稱、表徵圖、許可權、組件等。
這是初始狀態下,系統產生的AndroidManifest.xml資訊清單檔:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.rongma.helloworld"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:supportsRtl="true"10 android:theme="@style/AppTheme">11 <activity android:name=".MainActivity">12 <intent-filter>13 <action android:name="android.intent.action.MAIN" />14 <category android:name="android.intent.category.LAUNCHER" />15 </intent-filter>16 </activity>17 </application>18 </manifest>
在activity節點,我們可以看到android:name=".MainActivity" 此處相對應的就是com.rongma.helloworld.MainActivity檔案。也就是對MainActivity這個檔案進行了登記。
每一個頁面建立之後,都需要在資訊清單檔下進行註冊,註冊方法:
<activity android:name="Activity的檔案名稱"></activity>
如果這個頁面是“首頁”,即剛進入app時顯示的第一個頁面,其註冊方法:
<activity android:name="Activity的檔案名稱"><intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity>
總結:
我們要讓“Hello World”顯示在介面上:
首先,要在res/layout檔案夾下,寫一個xml布局檔案(圖紙)
然後,建立一個類,繼承自Activity(解鎖建造技能),通過setContentView方法擷取布局檔案(擷取圖紙)
最後,在AndroidManifest.xml檔案下,進行註冊(有關部門處登記)
§1.2 Android項目結構及“Hello World”應用解析