標籤:
其實這個目錄結構初次看還是挺讓人心慌慌的。
Android
現在引入了一個構建系統叫做 Gradle ,你可以理解為一個C/C++裡面的Makefile
或者是node裡面的 gulp
。
Android Studio
裡面是分模組進行開發的,一個 app
可以只有一個模組,也可以有多個模組組成(比如一些自己開發的庫)。如果我們的應用足夠簡單的話,那麼就只有一個模組, Android Studio
預設建立的模組就叫 app
,可以看見,檔案夾旁邊還有個小手機的標誌,代表這是一個 Android Application
模組,而不是一個Android Library
或者是其他模組。
看看我們的代碼應該放哪,我們把注意力集中在這個檔案夾
src
是 source
的意思,也就是源碼所在的目錄,我們主要就是在這個檔案夾裡寫東西。
Main在哪?
我們來看看,我們要的 Main
函數在哪裡?
首先我們看 src/main
目錄下的 AndroidManifest.xml
檔案。
AndroidManifest
是描述App的一個最最重要的檔案,一些內容的定義,主題的設定都在這裡,如果熟悉 node
的朋友肯定知道 package.json
,一樣一樣的。
我們看到,在AndroidManifest中,出現的 MAIN
和 LAUNCHER
字眼,Activity
有了他們兩個的描述,它就成了你點擊app的icon啟動的第一個 Activity
。
在 src/main/java
檔案夾中,找到 MainActivity
,開啟,看見其中有一個onCreate
的函數
顧名思義,這個函數是在這個 Activity
建立的時候調用的,它首先調用了下父類的onCreate方法(不可省略),然後調用了 setContentView
方法,這個方法是告訴Android系統:我用哪個布局檔案去渲染這個 Activity
,好了,到這裡一個入口的Activity
就建立好了。
註:在 Android
系統中, Activity
類的對象不是用來給開發人員直接去 new
的,它的生命週期 由系統直接管控 因為我們不參與控制 Activity
的生命週期,因此它在什麼時候回調什麼函數變得異常重要。學習編程最好的去處就是官方文檔,如果想更加深入瞭解Android Activity生命週期的童鞋,我這裡推薦看下官方對它的描述 傳送門: http://developer.android.com/training/basics/activity-lifecycle/index....
介面如何自訂?
接下來說說 Android
中的布局系統,眾所周知, Android
一開始的設計就是為了相對布局而生的。它提供了許多強大的布局特性,我們先學習下 Android
中最常見的兩種布局:
- 線性布局(LinearLayout)
- 相對布局(RelativeLayout)
線性布局就是子控制項按順序依次排列,線性布局可以設定方向,從上到下(vertical)或者從左至右(horizontal)。相對布局就更自由了,如果你增加一個子控制項,不設定任何屬性,則子空間的位置在容器的左上方(0,0)處。如果想改變位置,可以通過在容器中的位置(比如左上,右上,左下,右下,中間,靠左對齊垂直置中,靠右對齊垂直置中等等),或者和兄弟結點的對齊來決定控制項的位置。
布局相關的參考可以看這個連結:http://developer.android.com/training/basics/firstapp/building-ui.html
如何和控制項互動
在 Activity
中,和 xml
相關的綁定在 setContentView
這步就算完成了。Activity
在這之後會回調一個叫 onContentChanged
方法,在這個方法中,你可以使用類似如下代碼:
TextView textView = findViewById(R.id.textview);
來獲得對指定控制項的引用,其中 R.id.textview
是你在 xml
中指定的android:id
,通常情況下,在一個 xml
檔案中,同樣的 id
只允許出現一次。
擷取到對控制項的引用,我們就能調用一些控制項裡的方法擷取我們要的內容,或者設定我們要的內容,比如我這裡引用了一個 TextView
,則可以如下:
textView.getText()
擷取到 textView
裡面的內容。
以上就是最基礎的 UI
部分的入門講解。接下去,我們可以看看要寫的App的整個結構。
http://www.haoqijie.com/u/4256/book
http://www.haoqijie.com/u/4258/book
http://www.haoqijie.com/u/4261/book
http://www.haoqijie.com/u/4262/book
http://www.haoqijie.com/u/4263/book
http://www.haoqijie.com/u/4264/book
http://www.haoqijie.com/u/4265/book
http://www.haoqijie.com/u/4266/book
http://www.haoqijie.com/u/4267/book
http://www.haoqijie.com/u/4268/book
http://www.haoqijie.com/u/4269/book
http://www.haoqijie.com/u/4270/book
http://www.haoqijie.com/u/4271/book
http://www.haoqijie.com/u/4272/book
http://www.haoqijie.com/u/4273/book
http://www.haoqijie.com/u/4274/book
http://www.haoqijie.com/u/4275/book
http://www.haoqijie.com/u/4276/book
http://www.haoqijie.com/u/4277/book
http://www.haoqijie.com/u/4278/book
http://www.haoqijie.com/u/4279/book
http://www.haoqijie.com/u/4280/book
http://www.haoqijie.com/u/4281/book
http://www.haoqijie.com/u/4282/book
http://www.haoqijie.com/u/4283/book
http://www.haoqijie.com/u/4284/book
http://www.haoqijie.com/u/4285/book
http://www.haoqijie.com/u/4286/book
http://www.haoqijie.com/u/4287/book
http://www.haoqijie.com/u/4288/book
http://www.haoqijie.com/u/4289/book
http://www.haoqijie.com/u/4290/book
http://www.haoqijie.com/u/4291/book
http://www.haoqijie.com/u/4291/book
http://www.haoqijie.com/u/4292/book
http://www.haoqijie.com/u/4293/book
http://www.haoqijie.com/u/4293/book
http://www.haoqijie.com/u/4294/book
http://www.haoqijie.com/u/4295/book
http://www.haoqijie.com/u/4295/book
http://www.haoqijie.com/u/4296/book
http://www.haoqijie.com/u/4297/book
http://www.haoqijie.com/u/4298/book
http://www.haoqijie.com/u/4299/book
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
教你開發Android