2010年4月2日 星期五

從無到有-實戰Android系統開發-程式實戰(5)-對話框(Dialog)

當我們加入程式運算的邏輯判斷程式碼,接下來就是要了解如何加入一個對話框及提示訊息的方法及程式碼,如圖31所示。


圖31

簡單的說明一下,新增加程式有那些作用。首先,是如何顯示對話框及提示訊息的方法及程式碼。顯示出對話框的程式碼是在openShowDialog(){ }程式區塊,而提示訊息的程式碼是在openShowToast(){ }程式區塊。

Tip 4:在使用對話框之前,要先import android.app.AlertDialog類別,而提示訊息要先import android.widget.Toast類別。

撰寫好二個方法後,可以在上一個章節的程式判斷完成後,再呼叫那二個方法,如圖31所示。


圖32

程式執行的畫面,如圖32所示。


圖33

2010年4月1日 星期四

從無到有-實戰Android系統開發-程式實戰(4)-程式邏輯架構(Framework)

接下來,當我們了解如何設計使用者介面後,下一步,就是要進行簡單的撰寫程式的工作了。並且來說明Android基礎程式邏輯架構。
首先,我們先設計一個簡單的功能程式,就是在文字框中輸入文字,再按下按鈕後,會將輸入的文字資料顯示在文字標籤中。設計出來的介面,如圖28所示。

圖28

下一步,在Eclipse的平台上,打開「Memo」專案中的「src/cmd.demo.Memo/」目錄底下的Demo.java檔案,就會先看到Eclipse幫我們預先建立好了基本的程式邏輯。其預設的內容如下,如圖29所示:

圖29

簡單的說明一下,程式邏輯的架構,這個以Java程式語言寫成的檔案。 我們將程式直接拆開,分成二個部份來講解這個「Memo.java」 檔案的內容:

第一部份是在import那些類別,在Java語言中,要使用到任何API之前,都要事先導入相對應的Package。例如:如果要用到那些控制項的類別、控制項的事件類別等資料時,就要先import進來程式碼,才能使用到。

第二部份就是程式的主體,由public class Memo extends Activity { }的程式區塊就是我們要撰寫的主體。在裡面的程式碼就是我們程式開始的內容。而「/**」及「*/」是可以進行程式的文字註解。

在public void onCreate(Bundle savedInstanceState) { }的程式區塊,是預設的啟動方法。

下一步,當我們了解程式的基本架構後,接下來,就是再加入程式運算的邏輯判斷程式碼,在下述的範例中,主要是來了解如何導入其他用到的模組,如何取得、設定使用者介面元件的資料,如何觸發按鈕的事件方法。完整程式碼,如圖30所示。

圖30

簡單的說明一下,新增加程式有那些作用。首先,是如何取得按鈕(Button)的元件,再設定如何設定觸發按鈕的事件方法。

取得按鈕(Button)的元件的程式碼如下:
Button button = (Button)findViewById(R.id.Button01);

就是要宣告一個button的實體,再透過findViewById方法,從資源檔中取得對應的介面按鈕元件。取出的是「R.id. Button01」按鈕元件名稱。當輸入R.id時,再按「.」就會出現目前可以取得元件名稱。

Tip 2:在宣告任何控制項的實體時,要先import android.widget.Button對應的控制項。

接下來,就是要設定觸發按鈕的事件方法,程式碼如下:
button.setOnClickListener(proc_labelChange);

就是要用「Button」類別中的「setOnClickListener」方法。在方法中傳入了一個「proc_labelChange」函式。這就是Android 系統的使用者介面互動方式採用常見的事件驅動方式。

也就是當使用者按下「button」按鈕的時候,Android 系統會去觸發按鈕的「setOnClickListener」方法中所指定的「proc_labelChange」函式。

接下來就是要寫按鈕觸發事件函式,如下述程式碼區塊:
private OnClickListener proc_labelChange = new OnClickListener()
{
public void onClick(View v)
{
}
};

Tip 3:在宣告任何控制項的事件時,要先import android.view.View.OnClickListener;對應的事件。

程式的範例中所有的邏輯與運算內容,都放置在這個事件函式程式區塊中。 就是當使用者按下按鈕時,會觸發「OnClickListener」類型的事件函式。

先宣告EditText及TextView的實體,才可以將輸入的字串,顯示到文字標籤的內容中,程式碼如下:

EditText txtTitle = (EditText)findViewById(R.id.EditText01);
TextView labTitle = (TextView)findViewById(R.id.TextView01);

跟上面 button 的宣告一樣,只是改成宣告EditText及TextView實體,透過 findViewById方法,從資源檔中取得對應的文字欄位元件。要記得,要先import對應的控制項。

接下來的運算邏輯就是將輸入的字串EditText,顯示設定到(setText方法)文字標籤TextView的內容(getText函式)中,程式碼如下:

labTitle.setText(txtTitle.getText().toString());