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());

2010年3月30日 星期二

從無到有-實戰Android系統開發-程式實戰(3)-使用者介面(User Interface)

使用者介面(User Interface)不好意思,最近公司比較忙。所以,在更新文章上,比較慢一些。預計,四月份會正常更新,請大家多多指教。

接下來,當我們順利的開啟一個新的專案後,接著就是要設計使用者介面了。首先,在Eclipse的平台上,打開「Memo」專案中的「res/layout/main.xml」檔案,就會先看到目前檔案的預覽畫面(就是在Layout預設的頁標籤),如圖26所示。
接著我們來切換到另一個main.xml的頁標籤來看XML格式的文件,如圖27所示。

圖26

在Android平台上,使用者介面都是透過「View Group」或「View」類別來顯示。有關「View Group」或「View」類別,可以參考http://developer.android.com/guide/tutorials/views/index.html 的範例及說明。
Android提供非常豐富而多樣的介面元件,主要可以分成二種類型:
l 版面配置類型(例如:各種不同的Layout、Tab、List等):如圖26上面的Layouts當中的元件。也可以參考表10,對於比較常用到的版面配置,進行說明的動作。在後續的章節中,會陸續應用到。

l 顯示介面類型(例如:文字框、按鈕、輸入欄位等):如圖26上面的Views當中的元件。也可以參考表11,對於比較常用到的元件,一個一個的說明。在後續的章節中,會陸續應用到。






在Eclipse上,如圖26的畫面,目前,可以從Views或Layouts的視窗中,拖曳元件,拉到預覽畫面。而可以直接來設計介面。切換到「main.xml」的頁標籤來看XML格式的文件內容,如圖27所示。

基本上,就跟XML元素一樣,有開始的「<」符號就有結束的「>」符號。例如:一個文字顯示的元件在XML標籤表示方式為,包含在裡面的資料就是它的屬性設定,例如:
在設定寬度時,用到的屬性是:android:layout_width="fill_parent"
設定高度時,用到的屬性是:android:layout_height="wrap_content"
設定文字內容時,用到的屬性是:android:text="@string/hello"
等屬性的設定。


圖27

Tip 1:在Eclipse平台,選取選單「Source」中的「Format」選項,可以整理main.xml檔案裡面的XML資料。

Tips 1

2010年3月1日 星期一

從無到有-實戰Android系統開發-程式實戰(2)-專案架構(Project Files)

首先,我們就先由如何建立一個新的程式專案,來說明一下Android程式專案架構,進入Eclipse平台,選取選單「File」中的「New」選項,再選取「Android Project」的專案。就會出現新增Android專案的畫面,如圖24所示。

我們將新專案名稱命名為 Memo。 在「Contents」欄位裡,我們選擇「Create new project in workspace」(在工作區域中建立新專案)。所以欄位依預設值來設定即可。

不過,有一些欄位,是必須由使用者來輸入。請參考如圖7所示。我們要建立一個Memo的專案,可以依圖8的設定值來輸入。

專案輸入欄位,說明如下:


Memo專案,要輸入的欄位值如下:



圖24

填好所有的資料後,再按下「Finish」 按鈕,就建立好一個新的專案了。 請注意 Package Name 的設定,必須至少由兩個部分所構成。

「Create Activity」是指定用來產生預設 java 程式碼的文件名稱,與程式碼中預設 Activity 類別 (class) 的名稱。最好是依照 java 語言的命名習慣,將「Create Activity」採用開頭大寫的形式來命名即可。

回到 Eclipse 的主要畫面,我們會發現Eclipse會自動幫我們建立在 Package Explorer 視窗中的Memo目錄。如圖25所示。


圖25

而預設的目錄架構說明,請參考表9所示:

2010年1月3日 星期日

深入淺出Android程式設計(30)-結言

深入淺出Android程式設計的系列文章,就告一段落了。發表這一系列的文章。可以說明從Android的基礎說明到初步的開發流程。

而進階的程式設計及介面上的討論,我是會在下一個系列的文章,再跟各位來進行討論。而下一個系列的文章就是「從無到有-實戰Android系統開發」,就是從一個簡單的記帳系統為例子,來跟大家分享如何從使用者的需求進行分析、設計系統的介面、資料庫的分析、撰寫程式要注意的重點等系統開發的過程。

2009年12月25日 星期五

從無到有-實戰Android系統開發-程式實戰(1)-前言(Foreword)

程式實戰-如何由系統分析出來流程,來進行程式的撰寫過程,要提出重要的地方來說明分析。

經過需求分析、系統分析、系統設計等步驟,我們已經將系統的藍圖建構出來了,而在這個章節,我們要做的就是撰寫程式,將我們設計的系統實體化出來。不過,由於如果要將一個系統的程式碼一步一步的說明,就太多了。所以,我們在後續的章節會說明幾個重要的地方即可。依Android從程式撰寫到如何發佈到Android Market上,我們分成27個章節來說明,依下述描述所示:

預計範例為一個簡單的記事本系統,主要有一個記事列表畫面、編輯記事畫面。在下述的系統需求描述中,()中的項目編號,就是可以應用到的範圍。

在記事列表畫面(14),為主畫面。
選單為「系統設定」、「關於」。(5)
「系統設定」(12)為分類編輯、選取語系(13)、是否要訊息提醒、
設定要由前十、十五、三十分鐘等時間來提醒。
「關於」為出現系統訊息。(4)

在日期、時間到達前十、十五、三十分鐘,出現訊息提醒。(9)
列表時,長時間按住某一列時,會自動出現「編輯」、「刪除」等功能。(6)

在編輯記事畫面(14),可以選取日期(4)、時間(4)、屬於那個分類(15、16)、輸入記事內容。

新增時,新開一個Activity。(7)
編輯時,新開一個Activity,並且帶入一個key值,來查詢資料。(8)

1、2、3、11等章節為說明Android檔案結構及基礎程式邏輯。
10等章節 程式碼撰寫規範try catch。

1. 了解Android程式專案架構
2. 如何設計使用者介面
3. 了解Android基礎程式邏輯架構
4. 如何加入對話框(Dialog)
5. 如何加入選單(Menu)
6. 如何加入快捷選單(Context Menu)
7. 如何加入新的視窗(Activity)
8. 如何傳送資料到新視窗(Intent)
9. 如何使用到訊息提醒(Notification)
10. 如何設定記錄及Debug Log訊息(配合try catch機制)
11. 了解什麼是Activity的Life Cycle
12. 如何設定偏好資料(Preference)
13. 如何支援多國語系
14. 如何指定Android螢幕方向(直式、橫式顯示、自動切換)
15. 了解何謂Adapter(接口機制)
16. 如何加入下拉選單元件(Spinner)

上述範例,先以假想資料來操作。在17-19的章節。會儲存資料到資料庫。

17. 如何建立SQLite資料庫、資料表
18. 如何存取SQLite資料庫,透過SQLiteOpenHelper類別
19. 如何新增、刪除、更新資料

上述範例,可以儲存到資料庫後,在編輯記事時,增加地標欄位,可以先預設目前的地標。
在記事列表,增加可以頁標籤,可以切換成地圖模式,顯示在地圖有那些地方有記事。

20. 如何使用Google地圖的服務
21. 如何使用Map View
22. 如何加入按鍵控制(Key Event)
23. 如何取得現在位置(GPS/基地台三角定位)
24. 如何結合地圖及定位功能(My Location Overlay)
25. 如何在地圖上標上地標(Itemized Overlay)

完成上述功能,再發佈到Android Market上。

26. 如何產生應用程式的keys (使用key tools)
27. 如何發佈到Android Market

從無到有-實戰Android系統開發-系統設計(5)-記帳系統

接下來就是次要的所屬資料表,是要將記帳項目是屬於那個所屬的資料,記錄起來,才可以進行查詢、分析等進階功能的應用。設定這些欄位主要是依「從無到有-實戰Android系統開發-系統分析(9)」的新增所屬項目的系統畫面來分析。而有如表5的欄位分析。


表5

最後,是系統相關項目資料的設定,是要將有關系統方面的資料記錄起來,才可以進行系統方面的應用。設定這些欄位主要是依「從無到有-實戰Android系統開發-系統分析(10)」的系統畫面來分析。而有如表6的欄位分析。


表6