在開始使用Android SDK編寫第一個示例之前,必須確保已經(jīng)按照Android環(huán)境設置教程中的說明正確設置了您的Android開發(fā)環(huán)境。
下面來看看如何編寫一個簡單的Android應用程序,它將打印“Hello World!”。
注:理解這篇教程,對后面的學習非常重要。了解項目中每個目錄和每個文件的功能和作用。
第一步是使用Android Studio創(chuàng)建一個簡單的Android應用程序。 當點擊Android Studio圖標啟動完成時,它將顯示如下所示的屏幕 -

可以通過調用Start a new Android Studio Project 來開始創(chuàng)建應用程序開發(fā)。 在新的安裝框架中應詢問應用程序名稱,包裝信息和項目的位置。
輸入應用程序名稱(HelloWorld)后,選擇應用程序運行的Android目標設備,在這里需要指定最小的SDK,在這個教程中,選擇最小SDK為 API 21:Android 5.0(Lollipop) -
下一級安裝應該包含選擇移動設備的活動,它指定應用程序的默認布局。

選擇一個空的Activity,如下所示 -

配置Activity,默認即可,點擊完成。如下所示 -

在完成之后,開發(fā)開發(fā)工具將顯示如下界面,我們可以開始編寫應用程序的代碼了。

下面來看看,如何運行這個"Hello World!" 應用程序。假設您在創(chuàng)建環(huán)境的時候創(chuàng)建了AVD。 要從Android Studio運行應用程序,請打開項目的一個活動文件,然后單擊工具欄上的“運行app”圖標。如下圖中箭頭指向的位置 -
選擇發(fā)布目標,如下圖所示 -
注意:在這個過程中,Android Studio 可能需要安裝一些其它的依懶組件,這就要求必須能連接到互聯(lián)網(wǎng)絡了。安裝過程如下 -

Android Studio 在配置的AVD上安裝應用程序并啟動它,如果您的設置和應用程序一切正常,它將顯示以下“模擬器”窗口 -

以下是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文件的目錄。 |
無論您作為應用程序的一部分開發(fā)什么組件,都必須在AndroidManifest.xml中聲明其所有組件。這個文件作為Android OS和應用程序之間的接口,所以如果沒有在這個文件中聲明你的組件,那么操作系統(tǒng)將不會考慮它。 例如,默認清單文件將如下面的文件所示 -
需要更多地了解mipmap文件夾中的圖像,請參閱下面的圖像,mipmap文件夾中有一個圖像文件。
在使用Android應用程序時偶爾遇到的一個問題是,比如看到的圖像比較模糊,像素化或笨拙地拉伸。 解決此問題的方法是為Android支持的每種密度創(chuàng)建一個可繪制的文件夾,并將正確縮放的圖像放在每個文件夾中。 Android支持6種不同的密度范圍(以每英寸點數(shù)衡量):
13中引入的。首先,了解Activity是什么?Activity是支持屏幕或UI的Java代碼。換句話說,用戶界面的構建塊就是Activity。 Activity類是Android中的一個預定義類,每個擁有UI的應用程序都必須繼承它來創(chuàng)建窗口。
例如,MainActivity類是一個Activity,它從庫中的Activity類擴展而來。 下圖說明了一個Activity的生命周期。
Activity的一個生命周期描述了一個Activity開始啟動后的進程,直到應用程序關閉。 包括Activity暫時停止的進程,恢復等等。
為了更容易理解,可以修改MainActivity類的代碼,覆蓋onStart(),onResume()等方法,添加顯示方法已經(jīng)運行的消息。重新運行應用程序,看看會發(fā)生什么?
package com.yiibai.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
現(xiàn)在,logcat 窗口只顯示指定的消息。
您已經(jīng)成功運行了第一個Android應用程序,現(xiàn)在來回顧一下從應用程序調用以來Android如何運行。
在“項目”窗口中看到的不是涉及創(chuàng)建應用程序的所有組件。有些組件是由編譯器程序自動生成的。 而且它不顯示在項目窗口上。 例如,根據(jù)項目中源文件的結構,編譯器將創(chuàng)建一個R.java 源文件,該文件為項目上的資源定義常量。
要在Android Studio上查看R.java 文件,請打開MainActivity類,右鍵單擊R.layout.main_activity,然后選擇執(zhí)行(Go to / Implementation)

在R.java類中定義的常量是根據(jù)Project中的資源來創(chuàng)建的:
因此,在項目的某個地方,可以使用常量來引用項目中的資源。例如,R.layout.activity_main是一個常量,它表示res/layout文件夾中的activity_main.xml文件。
工作原理: