§1.2 Android專案結構及“Hello World”應用解析
書接上文,我們建立一個新的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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.rongma.helloworld.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
暫時不必知道這個佈局檔案程式碼的含義,我們只需要知道,這個檔案是用來“告訴機器”,我們要在手機上顯示“Hello World”字串。(類比到蓋房子,其實這就是圖紙)
然後,檢視Java程式碼:MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
不是什麼人都可以蓋房子的,為了解鎖“蓋房子”的技能,我們要讓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清單檔案:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rongma.helloworld">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
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>
在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檔案下,進行註冊(有關部門處登記)
(v0.9測試版 By 戎碼 @ 2016/10/14)
相關文章
- Android Studio目錄結構及工程專案結構解析Android
- Sumo-hello world對應的gui及檔案操作GUI
- HarmonyOS應用開發——Hello World
- AI 大模型企業應用實戰(07)-LangChain的Hello World專案大模型LangChain
- Smali 語法解析——Hello World
- 使用Golang語言編寫Hello World Web應用GolangWeb
- Hello, World
- Hello,World
- Hello World
- Hello World!
- Hello World !
- 5、Python入門____第一個Python專案:Hello WorldPython
- Intellij IDEA 安裝Scala外掛 + 建立Scala專案(Hello World!)IntelliJIdea
- Intellij IDEA 安裝Python外掛 + 建立Python專案(Hello World!)IntelliJIdeaPython
- Go - Hello WorldGo
- Deep "Hello world!"
- Hello Python worldPython
- Hello World探究
- Docker Hello WorldDocker
- dotnet hello world
- Go:Hello WorldGo
- ant Hello World
- Avalonia開發(二)專案結構解析
- I'm Hello World
- 輸出hello world
- RabbitMQ tutorial - "Hello world!"MQ
- WebGL 的 Hello WorldWeb
- react的”Hello World !“React
- vue(16)vue-cli建立專案以及專案結構解析Vue
- Android OpenGL ES 2.0 手把手教學(1)- Hello World!Android
- 如何在 Android 專案中應用 OpenCV?AndroidOpenCV
- Flutter Web 之 Hello WorldFlutterWeb
- [系列] Go gRPC Hello WorldGoRPC
- Hello World! XJ is here.
- 01-C++ "hello world"C++
- python輸出hello worldPython
- C# Hello,World(1)
- [WebAssembly 入門] Hello, world!Web
- RabbitMQ 入門 - Hello WorldMQ