2009年11月26日 星期四

從無到有-實戰Android系統開發-系統分析(5)

下一步,我們要做的Prototyping,就是統計帳戶餘額的動作。一進入帳戶餘額的畫面,就會依資產、負債所屬的帳戶來統計目前小計資料,也會計算所有帳戶的總計資料。
可以在「帳戶」按鈕選取一個單一的帳戶,會將此帳戶記錄的明細資料顯示列表出來。如圖14所示。


圖14

從無到有-實戰Android系統開發-系統分析(4)



下一步,我們要做的Prototyping,就是新增記帳項目時,會顯現出來的畫面。主要的功能為,列出今日記帳記錄,計算金額,輸入主題、備註,選擇日期、類別、帳戶、歸屬等選項,如圖10所示。
分成三個區塊,在最上面是計算金額,輸入主題、備註,選擇日期、類別、帳戶、歸屬等選項。
在第二區塊,會顯示出今日記帳記錄。而第三區塊就是進行「儲存」、「取消」等功能運作。

圖10

下述畫面為在計算金額,選擇日期、類別、帳戶、歸屬等選項時,會顯示出的Prototyping。在按下「計算」按鈕時,就會顯示出一個類似計算機的畫面,有0到9的數字及加、減、乘、除等按鈕,可以進行金額的計算。再按下「=」按鈕,將結果帶回原新增記帳項目畫面。如圖11所示。

圖11

在選取記帳日期時,會預設先帶出今天日期在中間的按鈕,可以按「+」或「-」按鈕來增加或減少一天來設定記帳日期,也可以直接按下中間的按鈕,會顯示出選取日期畫面,如圖12所示。

圖12

在選擇類別、帳戶、歸屬等選項時,可以直接按下按鈕就會顯示出此功能可以選取的項目列表。如圖13所示。

圖13

2009年11月25日 星期三

從無到有-實戰Android系統開發-系統分析(3)

系統介面:
Android GUI介面設計。
首先,要做的Prototyping,就是進入系統時,會顯現出來的畫面。主要的功能為列出資料、查詢資料、新增資料,如圖8所示。


分成四個區塊,在最上面是選取查詢條件(有帳戶、記帳日期區塊等條件)的區塊,點選「帳戶」圖示,會出現單選的列表畫面,選取任何一個。可以再選取記帳日期區塊,會先顯示統計出查詢條件的支出總金額。


而選取的條件資料,會顯示在第二區塊,讓使用者知道目前的查詢條件。而第三區塊就是依查詢條件列出符合的列表資料,一進入系統,會先列出今天的所有記帳資料。最下面的區塊是「新增記帳項目」的按鈕。功能畫面,後續再描述。

圖8

還有,在按下手機上的「menu」按鈕時,會出現「帳戶結餘」、「設定」、「關於」等選項。如圖9所示。功能畫面,後續再描述。



圖9

2009年11月19日 星期四

從無到有-實戰Android系統開發-系統分析(2)

根據系統架構圖,我們就可以依需求分析的功能及假想一下系統的操作介面,就是先做出一個Prototyping,給客戶確認一下,是不是可以符合客戶的需求。而做Prototyping,可以在白板、圖紙上直接畫出來。

不過,現在的電腦科技發達,也可以用Microsoft Visio來畫草圖,在網路上搜尋有關這方面的資訊。我們找到一個在Visio上有關Android GUI的樣板。請參考網站(http://www.artfulbits.com/Android/Stencil.aspx),去下載可在Visio上使用的樣板檔案。到時候就可以利用Visio進行Android GUI Prototyping。下載前需要填寫個人資料,該網站就會寄下載地址到你的e-mail ,以便進行檔案下載。

後續有關設計的畫面,全部都是用Visio來拉的。來表現出此工具的便利性。此工具也預計在2.0的版本,增加匯出成XML檔案的功能。

順便,介紹一個方便的小工具DroidDraw,是一個可以讓我們在設計Android介面的好工具,在Eclipse的開發介面沒有提供類似其他開發工具那樣,可以直接拖曳物件的功能,所以,有人就用Java寫了類似的工具,幫助Android的開發人員可以比較直覺的方式來拖曳物件,完成Android的介面。

首先,在連到DroidDraw的網頁(參考網址如下:http://www.droiddraw.org/ ),就會直接出現可以編輯的畫面,如圖6所示。在編輯畫面,可以先設定畫面的層次及螢幕的尺寸。可以選取的選項,如下所述:

Root Layout(畫面層次):Absolute Layout、Linear Layout、Relative Layout、Scroll View、Table Layout

Screen Size(螢幕尺寸):QVGA Land scape、QVGA Portrait、HVGA Land scape、HVGA Portrait


圖6

可以拖曳物件到編輯畫面上,再選取要編輯的物件,在右上方的視窗,切換到Properties(屬性頁籤)來設定此物件的屬性。編輯好介面後,在右下方,按下「Generate」按鈕來產生對應的XML內容,如圖7所示。
下一步就可以將這個XML內容選取後,複製到Eclipse的介面XML檔案。





圖7

從無到有-實戰Android系統開發-系統分析(1)

系統分析-如何由系統運作的流程分析出系統介面及功能。

根據需求分析出來的結果,歸納出系統的功能列表及系統介面的架構,如圖5所示。

系統功能列表:

記帳系統
記帳資訊列表:將今日所有記帳項目列表(預設)或是
將符合查詢條件的記帳項目列表,可以進行記
帳項目的修改、刪除。
新增記帳項目:新增一個記帳項目,可以輸入金額、
日期、主題、類別、帳戶、所屬、備註等資訊
,再新增到資料庫中。
帳戶結餘:列出所有帳戶結餘。
設定:類別、帳戶、所屬項目設定。
關於:顯示出系統資訊(版本、作者、介紹網址)。

系統架構圖:

圖5

2009年11月16日 星期一

從無到有-實戰Android系統開發-需求分析(5)

最後,我們來討論有關「帳戶結餘」、「設定」等工作項目。進入「帳戶結餘」的工作項目,主要是「依資產、負債的分類,列出所屬帳戶的金額總和資料」,讓使用者一看就了解目前的記帳情況。

進入「設定」的工作項目,主要是可以進行「帳戶資料」、「類別資料」、「歸屬資料」的維護及「系統設定」的動作。而所謂的維護就是對資料進行「新增」、刪除」、「修改」等動作。而目前有關「系統設定」方面,可以進行「資料庫設定」、 「語系」。

圖3


圖4

從無到有-實戰Android系統開發-需求分析(4)

接下來,就開始來討論每一個工作項目的系統流程。在「新增記帳項目」工作項目。進入新增工作項目,就可以進行輸入「金額」、「主題」、「備註」,再選取「類別」、「帳戶」、「歸屬」等資料。
再按下「儲存」,來「判斷金額、主題是否有輸入資料」的判斷。如果金額、主題等欄位沒有輸入資料,就要「提示訊息」給使用者。如果有輸入資料就「寫入資料」的動作。如圖2所示。




圖2

深入淺出Android程式設計(24)-如何建立介面,以「Hello,Android!」專案說明

在這個章節要來介紹有關如何建立介面,以「Hello,Android!」專案說明。

如何建立介面

在上個章節,我們建立好專案了。但是,只有自動產生出來的樣版程式。接下來,我們就要撰寫簡單的程式碼,來在螢幕顯示出「Hello,Android!」的字串,下述為最後要完成的程式碼,後續會將每一行程式碼進行說明。

public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
TextView tv = new TextView(this);
tv.setText("Hello,Android!");
setContentView(tv);
}
}

第一步,首先,要先加入TextView的類別,請先撰寫加入的程式碼在程式的最上面。
import android.widget.TextView

在Android SDK中,使用者介面是稱為View的子類別所組成,而View簡單的說就是一個繪圖物件,例如:radio button、動畫或是文字標籤,處理文字的View子類別則稱為TextView。

下述程式碼為TextView的建構式
TextView tv = new TextView(this);

TextView的建構參數是Android的Context Instance,Context表示一個系統操作的憑藉介面,它提供諸如解析資源、存取資料庫與設定喜好等服務,Activity就是繼承自Context,因為我們的HelloAndroid專案繼承自Activity,所以也是一個Context,所以用來當作TextView的建構參數。

在建構好TextView之後,就是要設定它要顯示的文字,使用setText屬性,如下所述的程式碼:
tv.setText("Hello,Android!");

這時,我們既然已經建構了TextView並且設定好它要顯示那些文字屬性,最後一個步驟就是將TextView物件顯示在螢幕上,如下所述的程式碼:
setContentView(tv);

Activity的setContentView()指令,是讓Android系統應當將View關聯到Android的介面,如果Activity不使用這個方法,除了空白螢幕外,就什麼也不會顯示出來,而我們的目的就是要顯示出文字,所以將剛建立的TextView物件關聯到Android的介面。

這就是建構好一個TextView物件,並且設定好相關屬性的方式,接下來下一個章節就是要執行專案了。

2009年11月15日 星期日

從無到有-實戰Android系統開發-需求分析(3)

系統流程:
首先,我們來看進入記帳系統的系統流程,再進入記帳系統時,會先「列出今日所有記帳項目」的列表及總額。可以「依帳戶、日期區間」來進行查詢,就會顯示出「符合條件」的記帳項目及總額。
接下來,可以進行「新增記帳項目」、「帳戶結餘」、「設定」、「關於」等工作項目。如圖1所示。


圖1

從無到有-實戰Android系統開發-需求分析(2)

接下來,可以從之前的情境模擬中,我們可以歸納出使用者的需求,如下文所述:

需求列表:
1.進入系統時,要先列出今日記帳的項目,可以依帳戶及記帳日期的區
間來查詢。
2.對於列表出來的記帳項目可以進行編輯、刪除的功能。
3.可以新增一筆記帳項目,可以記錄消費的金額、此消費的時間日期、
主題、此消費是屬於那方面的帳戶(例如說是現金消費、信用卡扣款等
。)、類別(是屬於食、衣、住、行、育、樂那方面。)或是所屬於個人
、公司的消費等資訊。
4.可以針對所設定的帳戶來統計各個帳戶到目前的消費總額。
5.可以針對類別、帳戶、所屬等項目,進行編輯的設定。
接下來,我們就要依需求的列表,整理出系統的運作流程。

從無到有-實戰Android系統開發-需求分析(1)

在前一年,我參加了2008第一屆iT邦幫忙鐵人賽,那時候,我分享的主題是「深入淺出Android程式設計」,雖然沒有得到名次,但是,也讓我獲益良多。

而今年,又有了2009第二屆iT邦幫忙鐵人賽,所以,我也決定參加第二屆的比賽,想跟大家分享有關如何從無到有的來設計Android系統,從需求的分析、系統介面的設計、資料庫的規劃、程式實作等步驟。

以一個簡單的記帳系統為例子,來說明上面的步驟。預計會分成下述的步驟來說明:

1.需求分析-如何由使用者的需求,來分析一個記帳系統的運作流程。
2.系統分析-如何由系統運作的流程分析出系統介面及功能。
3.系統設計-如何由系統流程、功能來分析資料庫的設計。
4.程式實戰-如何由系統分析出來流程,來進行程式的撰寫過程,要提出重要的地方來說明分析。
5.系統測試-如何由系統分析,來制定系統測試的流程及步驟。

目前,比賽已經結束了。我就想把我在比賽的文章也貼到Blog上,給大家分享這方面的資訊。

首先,要做任何一套系統,要先了解使用者的需求,有了使用者的需求,才
可以依使用者的需求來分析系統的功能及運作的流程,而我們可以先透過情境模
擬的方式來模擬使用者的需求,再將需求列表起來,最後,再依照情境模擬及需
求列表來設計出系統的流程。

情境模擬:
現在經濟不景氣,所以,每個人都應該要有記帳的習慣,而如果要隨時隨地的記帳,那最好的選擇,就是用手機來記帳。不然,如果要用手動記錄在筆記本上,或是回到辦公司或家裡才記帳。早就記不得了。而且,記錄在筆記本上,也不好進行統計。所以,用手機來記帳,即時有方便,也可以隨時隨地就統計今天花了什麼。

那就假想一下,走在路上,隨手想買個東西。立刻拿出手機,按下記帳的圖示,立刻顯示出今天買了什麼東西的列表及總額,讓你看看有沒有超過預算。買好東西的同時,就新增一筆記帳的資料,包含了消費的金額、此消費的時間日期、主題、此消費是屬於那方面的帳戶(例如:是屬於現金消費、信用卡扣款等。),而所屬的類別(是屬於食、衣、住、行、育、樂那方面。)或是所屬於個人、公司的消費等資訊。

這樣記錄,可以先記錄一個星期的資訊,再來統計一下每一個帳戶花費了多了金額。讓我們可以對下一個星期的預算來進行節制。

同時,可以讓個人的需求不同,來設定帳戶(例如說是現金消費、信用卡扣款等。)、類別(是屬於食、衣、住、行、育、樂那方面。)或是所屬於個人、公司的消費等資訊的編輯。