在開始使用Android SDK編寫第一個示例之前,必須確保已經按照Android環境設置教學中的說明正確設置了您的Android開發環境。
下麵來看看如何編寫一個簡單的Android應用程式,它將列印“Hello World!”。
注:理解這篇教學,對後面的學習非常重要。瞭解專案中每個目錄和每個檔的功能和作用。
創建Android應用程式
第一步是使用Android Studio創建一個簡單的Android應用程式。 當點擊Android Studio圖示啟動完成時,它將顯示如下所示的螢幕 -
可以通過調用Start a new Android Studio Project 來開始創建應用程式開發。 在新的安裝框架中應詢問應用程式名稱,包裝資訊和專案的位置。
輸入應用程式名稱(HelloWorld)後,選擇應用程式運行的Android目標設備,在這裏需要指定最小的SDK,在這個教程中,選擇最小SDK為 API 21:Android 5.0(Lollipop) -
下一級安裝應該包含選擇移動設備的活動,它指定應用程式的默認佈局。
選擇一個空的Activity
,如下所示 -
配置Activity
,默認即可,點擊完成。如下所示 -
在完成之後,開發開發工具將顯示如下介面,我們可以開始編寫應用程式的代碼了。
運行應用程式
下麵來看看,如何運行這個"Hello World!"
應用程式。假設您在創建環境的時候創建了AVD。 要從Android Studio運行應用程式,請打開專案的一個活動檔,然後單擊工具欄上的“運行app”圖示。如下圖中箭頭指向的位置 -
選擇發佈目標,如下圖所示 -
注意:在這個過程中,Android Studio 可能需要安裝一些其他的依懶組件,這就要求必須能連接到互聯網路了。安裝過程如下 -
Android Studio 在配置的AVD上安裝應用程式並啟動它,如果您的設置和應用程式一切正常,它將顯示以下“模擬器”窗口 -
Android專案結構概述
以下是Android Studio中的的專案結構圖:
下麵對上面檔或目錄的解釋 -
編號 | 檔或目錄 | 描述 |
---|---|---|
1 | AndroidManifest.xml |
這是清單檔,它描述了應用程式的基本特徵並定義了它的每個組件。 |
2 | java |
這包含專案的.java 原始檔案。 默認情況下,它包含一個具有活動類的MainActivity.java 原始檔案,該Activity 類在應用程式使用應用程式圖示啟動時運行。 |
3 | res/drawable |
以前的Android版本使用這個檔夾來存儲圖像,當前版本使用mipmap 檔夾來存儲圖像。這個目錄幾乎不再使用。 |
4 | res/layout |
這是定義應用程式用戶介面的檔的目錄。 |
5 | res/menu |
包含將顯示在操作欄上的專案的XML菜單檔夾 |
6 | res/mipmap |
使用來包含mipmap 圖像 |
7 | res/values |
這是包含資源集合(如字串和顏色定義)的其他各種XML檔的目錄。 |
1. AndroidManifest.xml
無論您作為應用程式的一部分開發什麼組件,都必須在AndroidManifest.xml
中聲明其所有組件。這個檔作為Android OS和應用程式之間的介面,所以如果沒有在這個檔中聲明你的組件,那麼操作系統將不會考慮它。 例如,默認清單檔將如下面的檔所示 -
2. res/mipmap
需要更多地瞭解mipmap
檔夾中的圖像,請參閱下麵的圖像,mipmap
檔夾中有一個圖像檔。
在使用Android應用程式時偶爾遇到的一個問題是,比如看到的圖像比較模糊,像素化或笨拙地拉伸。 解決此問題的方法是為Android支持的每種密度創建一個可繪製的檔夾,並將正確縮放的圖像放在每個檔夾中。 Android支持6種不同的密度範圍(以每英寸點數衡量):
- ldpi:低密度螢幕; 大約120dpi。
- mdpi:中等密度(在傳統的HVGA)螢幕上; 大約160dpi。
- hdpi:高密度螢幕; 大約240dpi。
- xhdpi:超高密度螢幕; 大約320dpi。 在API級別8中添加
- nodpi:這可以用於位圖資源,不想縮放到匹配設備密度。
- tvdpi:螢幕介於mdpi和hdpi之間; 大約213dpi。這不被視為“主要”密度組。 它主要用於電視機,大多數應用程式不需要它 - 為大多數應用程式提供mdpi和hdpi資源已足夠,系統將根據需要進行擴展。此限定符是在API級別
13
中引入的。
Android Activity生命週期
首先,瞭解Activity是什麼?Activity
是支持螢幕或UI的Java代碼。換句話說,用戶介面的構建塊就是Activity
。 Activity
類是Android中的一個預定義類,每個擁有UI的應用程式都必須繼承它來創建窗口。
例如,MainActivity
類是一個Activity
,它從庫中的Activity
類擴展而來。 下圖說明瞭一個Activity
的生命週期。
Activity
的一個生命週期描述了一個Activity
開始啟動後的進程,直到應用程式關閉。 包括Activity
暫時停止的進程,恢復等等。
為了更容易理解,可以修改MainActivity
類的代碼,覆蓋onStart()
,onResume()
等方法,添加顯示方法已經運行的消息。重新運行應用程式,看看會發生什麼?
package com.zaixian.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
public static final String TAG ="MyMessage";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Print Log
Log.i(TAG,"onCreate");
}
@Override
protected void onStop() {
super.onStop();
// Print Log
Log.i(TAG,"onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
// Print Log
Log.i(TAG,"onDestroy");
}
@Override
protected void onPause() {
super.onPause();
// Print Log
Log.i(TAG,"onPause");
}
@Override
protected void onResume() {
super.onResume();
// Print Log
Log.i(TAG,"onResume"); }
@Override
protected void onStart() {
super.onStart();
// Print Log
Log.i(TAG,"onStart");
}
@Override
protected void onRestart() {
super.onRestart();
// Print Log
Log.i(TAG,"onRestart"); }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// Print Log
Log.i(TAG, "onCreateOptionsMenu");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Print Log
Log.i(TAG, "onOptionsItemSelected");
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
return super.onOptionsItemSelected(item);
}
}
重新運行應用程式,並且看到記錄在logcat
窗口上的消息。
可以將篩選器設置為logcat
,只顯示日誌記錄的消息。
篩檢程式名稱:My Filter
日誌標記(正則運算式):MyMessage
現在,logcat 窗口只顯示指定的消息。
Android應用程式如何運行?
您已經成功運行了第一個Android應用程式,現在來回顧一下從應用程式調用以來Android如何運行。
在“專案”窗口中看到的不是涉及創建應用程式的所有組件。有些組件是由編譯器程式自動生成的。 而且它不顯示在專案窗口上。 例如,根據專案中原始檔案的結構,編譯器將創建一個R.java 原始檔案,該檔為專案上的資源定義常量。
要在Android Studio上查看R.java 檔,請打開MainActivity
類,右鍵單擊R.layout.main_activity
,然後選擇執行(Go to / Implementation)
在R.java類中定義的常量是根據Project中的資源來創建的:
因此,在專案的某個地方,可以使用常量來引用專案中的資源。例如,R.layout.activity_main
是一個常量,它表示res/layout
檔夾中的activity_main.xml
檔。
工作原理: