Android Hello World範例


在開始使用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:螢幕介於mdpihdpi之間; 大約213dpi。這不被視為「主要」密度組。 它主要用於電視機,大多數應用程式不需要它 - 為大多數應用程式提供mdpihdpi資源已足夠,系統將根據需要進行擴充套件。此限定符是在API級別13中引入的。

Android Activity生命週期

首先,了解Activity是什麼?
Activity是支援螢幕或UI的Java程式碼。換句話說,使用者介面的構建塊就是ActivityActivity類是Android中的一個預定義類,每個擁有UI的應用程式都必須繼承它來建立視窗。
例如,MainActivity類是一個Activity,它從庫中的Activity類擴充套件而來。 下圖說明了一個Activity的生命週期。

Activity的一個生命週期描述了一個Activity開始啟動後的進程,直到應用程式關閉。 包括Activity暫時停止的進程,恢復等等。

為了更容易理解,可以修改MainActivity類的程式碼,覆蓋onStart()onResume()等方法,新增顯示方法已經執行的訊息。重新執行應用程式,看看會發生什麼?

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

現在,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檔案。

工作原理: