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

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

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



表3

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



表4

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

首先,我們依資料庫模型的分析,列出如表1所示的所有資料表及相關的說明。記帳項目資料表為主要的資料表,而跟它有關連的是三個次要的資料表,分別是類別、帳戶、所屬等資料表。
最後一個資料表是系統設定資料表,是用來設定系統相關的設定,例如:版本、資料庫路徑等欄位。



表1

首先,我們先來看主要的資料表,是要將記帳項目的資料,記錄起來,才可以進行查詢、分析等進階功能的應用。設定這些欄位主要是依「從無到有-實戰Android系統開發-系統分析(4)」的新增記帳項目的系統畫面來分析。而有如表2的欄位分析。



表2

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

首先,我們要從系統功能、介面來設計可以儲存資料的資料庫及對應的資料表及欄位。依系統功能,我們可以知道主要是用一個記帳的主要資料表對應到類別、帳戶、所屬等的次要資料表,以及一個可以儲存系統相關資料的資料表。
依這樣的關係,我們整理出來相關資料庫模型,如下表所述:
ER Modem

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

系統設計-如何由系統流程、功能來分析資料庫的設計。

我們透過需求分析、系統分析,了解一個系統的運作流程及系統功能、介面的整理。接下來,就是要實際的進行撰寫程式的工作。

不過,在之前,我們還在進行資料庫方面的分析,因為,要儲存記帳方面的資料。就要依系統功能、介面來設計可以儲存資料的資料庫及對應的資料表及欄位。

首先,我們先來介紹一下Android的預設資料庫SQLite吧。SQLite是一種在嵌入式系統中很常見的資料庫,而且所有的資料都會儲存在一個檔案中。就跟Microsoft Access一樣,是為了方便遷移。而SQLite有簡潔的SQL存取介面、相當快的存取速度,而且僅佔用相對其他資料庫少量的記憶體空間。在Android平台上,SQLite資料庫可以用來儲存應用程式中使用到的資料,還可以透過Content Provider等方式,來讓其他應用程式也可以取得其中的資料。

在後續的章節中,我們先分析系統功能、介面來設計資料庫,畫出ER模型、資料表與資料表之間的關連,最後,會用一個簡單的例子來說明如何存取SQLite中的資料。

2009年12月24日 星期四

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

最後,我們要做的Prototyping,就是進行一般設定及顯示關於的動作。一進入一般設定的畫面,就先列出目前可以進行一般設定的選項列表。如圖22所示。目前可以設定資料庫及語系等基本功能。
在資料庫選項,可以決定是否要將資料庫的檔案儲存在SD卡中。在語系方面可以進行繁體中文及英文,二種語系的轉換。


圖22

回到系統一開始進入的畫面,按下手機上的「menu」按鈕時,會出現「帳戶結餘」、「設定」、「關於」等選項。按下「關於」功能畫面,就會顯示出系統的相關資訊,例如:版本、作者、網站等資訊。如圖23所示。


圖23

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

接下來,我們要做的Prototyping,就是進行設定歸屬項目的動作。一進入歸屬項目的畫面,就先列出所有的歸屬列表。如圖20所示。
要編輯或刪除某個選項,就長按住某個選項,就會出現「編輯及刪除」的選項視窗。按下「建立新歸屬」按鈕,可以進入新增歸屬畫面。如圖21所示。


圖20


在新增歸屬畫面,可以進行歸屬名稱的輸入,如圖21所示。最後再按下「儲存」按鈕來儲存資料到資料庫中,也可以按下「取消」。回到上一層項目。


圖21

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

接下來,我們要做的Prototyping,就是進行設定帳戶項目的動作。一進入帳戶項目的畫面,就先依資產、負債的區別來列出所屬的帳戶列表,是以資產區別為預設。如圖18所示。
要編輯或刪除某個選項,就長按住某個選項,就會出現「編輯及刪除」的選項視窗。按下「新增資產(負債)」按鈕,可以進入新增帳戶畫面。如圖19所示。


圖18


在新增帳戶畫面,可以進行帳戶名稱、開啟帳戶金額設定的輸入,如圖19所示。而開啟帳戶金額的設定是為了讓使用者可以設定此帳戶目前可以使用的金額。


圖19

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

接下來,我們要做的Prototyping,就是進行設定類別項目的動作。一進入類別項目的畫面,就先依支出、收人的區別來列出所屬的類別列表,是以支出區別為預設。如圖16所示。
要編輯或刪除某個選項,就長按住某個選項,就會出現「編輯及刪除」的選項視窗。按下「新增新支出(收入)」按鈕,可以進入新增類別畫面。如圖17所示。


圖16


在新增類別畫面,可以進行類別名稱、此類別預算的輸入,以及是否要判斷使用預算的勾選項目,如圖17所示。是否要判斷使用預算,是讓使用者可以設定此類別預算金額。如果在新增記帳項目時,如果此類別總計的金額超過的話,會提示使用者。

圖17

2009年12月22日 星期二

深入淺出Android程式設計(29)-如何將Eclipse中文化及方便的小工具DroidDraw

在這個最後的章節,我們要介紹如何將Eclipse中文化及方便的小工具DroidDraw的安裝及用法。

如何將Eclipse中文化,首先,先啟動Eclipse,接下來在選取選單「Help」中的「Software Updates....」選項。
在點選「Software Updates....」選項後,就會出現Software Updates的視窗,切換頁標籤至「Available Software」,再點選「Add Site...」按鈕。就會出現要新增外掛的網址輸入視窗。
在新增外掛的網址輸入視窗,在Location欄位輸入「http://download.eclipse.org/technology/babel/update-site/ganymede
」,再按下「OK」按鈕。就會回到原來的Software Updates視窗。
在Software Updates視窗,就會多出剛才輸入的網址而產生出來的選項,點選開來,再勾選「Babel Language Packs in traditional Chinese」選項,再按下「Install」按鈕,進行安裝動作,如圖75、圖76所示。再重新開啟Eclipse,就變成中文化的介面,如圖77所示。


圖75


圖76


圖77

而方便的小工具DroidDraw,是一個可以讓我們在設計Android介面的好工具,在Eclipse的開發介面沒有提供類似其他開發工具那樣,可以直接拖曳物件的功能,所以,有人就用Java寫了類似的工具,幫助Android的開發人員可以比較直覺的方式來拖曳物件,完成Android的介面。
首先,在連到DroidDraw的網頁(參考網址如下:http://www.droiddraw.org/ ),就會直接出現可以編輯的畫面,如圖78所示。在編輯畫面,可以先設定畫面的層次及螢幕的尺寸。可以選取的選項,如下所述:
Root Layout(畫面層次):Absolute Layout、Linear Layout、Relative Layout、Scroll View、Table Layout

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


圖78

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


圖79

總算結束了鐵人賽的連續發文,謝謝大家的支持。有關Android的介紹不是結束,而是開始。
我會再整理一些有關Android程式開發方面的文章,再分享給大家。預計會用一些程式範例,來說明如何驅動事件、每一個控制項的運作方式、資料庫SQLite的應用、如何使用Map View控制項等進階主題。
如果大家在it邦看不到圖片的話,大家也可以來看我的部落格:http://estyleservice.blogspot.com/,我會陸續更新之前我寫的文章及後面的進階主題。

深入淺出Android程式設計(28)-如何用非Eclipse平台來建立專案,以「Hello,Android!」專案說明

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

如果不想使用Eclipse,而想用其它IDE開發介面,或者像傳統的C那樣,使用文字編輯器與命令列工具,那麼ADT外掛套件就無法協助來處理這些需求,不過,不用擔心,如果開發人員不會因為不使用Eclipse ADT外掛套件而失去之前章節,所提到的那些功能。

ADT外掛套件只是將一系列有關Android SDK的工具加以包裝(這些工具,例如:模擬器、aapt、adb、ddms)並且整合在Eclipse平台上,因此,是有可能用其它工具來包裝這些工具,如「Ant」。

Android SDK會建立的樣版檔案包含了一個可以跟「Ant」相容的build.xml檔案與檔案名稱為「activityCreator.py」的python檔案(在Windows平台為「activityCreator.bat」檔案名稱),可以為專案建立所有的基本目錄與檔案,讓開發人員可以從命令列建立專案,或者選擇整合到其它的IDE開發工具中。

例如,可以在Dos視窗,用以下命令建立與Eclipse建立類似的專案架構。請參考之前的章節-「如何在其他IDE或工具開發Android應用程式(上)」當中的描述。

activityCreator.py --out HelloAndroid com.google.android.hello.HelloAndroid

下一步,為了建立出專案,開發人員得接著執行「ant」相關命令,然後會在專案路徑底下的bin目錄下會產生一個HelloAndroid.apk檔案,而.apk檔案是一個Android對應用程式的封裝檔案,最後再使用「adb」工具就可以安裝到模擬器來進行測試。

上述這些運作方式及工具的操作,請參考之前的章節,由深入淺出Android程式設計(15)的章節到深入淺出Android程式設計(21)的章節,都有提到這方面的運作。

深入淺出Android程式設計(27)-如何進行專案除錯,以「Hello,Android!」專案說明

在Eclipse的ADT外掛與Eclipse的除錯整合的非常好,為了要測試這樣的機制,讓我們在程式碼裡插入一個bug,修改一下專案的程式碼如下所述:

public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Object o = null;
o.toString();
setContentView(R.layout.main);
}
}

當這樣的變動,加入「Object o = null;」及「o.toString();」等錯誤的程式碼,就會出現「Null Pointer Exception」的錯誤資訊,再一次執行專案時,就會顯示有錯誤訊息,如圖73所示。

圖73

如果要找出那裡發生錯誤,可以在「Object o = null;」這一行程式碼建立中斷點,使用的方式就是在Eclipse行號左邊區域建立中斷點,如圖74所示,然後選取選單「Run」中的選取「Debug」選項,來載入最後程式進入除錯模式。程式會重啟模擬器,但是,執行到中斷點時,程式會中斷,然後就可以在Eclipse的除錯模式下,一步一步的執行程式碼,如同除錯其它程式一樣。


圖74

2009年12月13日 星期日

深入淺出Android程式設計(26)-如何將介面升級到以XML方式來排版,以「Hello,Android!」專案說明

在這個章節要來介紹有關如何將介面升級到以XML方式來排版,以「Hello,Android!」專案說明。

如何將介面升級到以XML方式來排板

在上一個章節,我們所介紹的「Hello,Android!」專案是用開發人員稱之為程式化開發的介面,也就是說直接用程式碼來建構使用者介面,但是,這樣的建構介面的方式會發生許多問題,而小小的排版變動可能導致大部分的程式變更,最大的問題是容易忘記的是如何把正確的介面顯示在螢幕上,這可能導致發生錯誤並浪費時間除錯。

這也是為什麼Android SDK會提供另一種介面的建立模式,使用XML排版檔案來記錄介面的資料,最簡單了解的方法就是看下述的範例,下面的XML排版檔案內容就是跟剛編譯的程式同樣的的排版建構:




在上述的XML檔案中的標籤(Tag)可以自由使用,結構也很簡單,標籤(Tag)的名稱就是View物件的類別名稱,在這個範例,標籤(Tag)就只有一個「TextView」,開發人類可以使用任何繼承自View物件的類別做為標籤(Tag)名稱,包含一些開發人員所做的類別,這樣的結構比較容易快速建立界面,比起開發人員的程式碼要簡單的多了,這樣的模式受到Web開發的啟示,將參數從程式邏輯抽離只用來填入與取得資料。

在這個XML使用了一些屬性,大致說明如下:
xmlns:android

名稱空間宣告,讓Android工具參考Android名稱空間的一般屬性,大部分的XML排版檔必須使用這個名稱空間。

android:layout_width

這個屬性宣告View要佔螢幕多少空間,在這個例子,唯一的View要佔用全部的螢幕,所以使用「fill_parent」這個參數,就是填滿的意思。

android:layout_height

就像android:layout_width的屬性一樣,除了它是指螢幕可用的高度。

android:text

設定TextView包含的文字屬性,這上述的範例中,就是設定成「Hello,Android!」

那麼這個XML檔案會放在那裡呢?目前的設定是放到專案目錄下的res目錄底下的layout目錄,預設的檔案名稱是main.xml,如圖72所示。



圖72

下一步,打開Package Explorer下原始碼目錄內的R.java檔案,看起來的內容如下所述:

public final class R {
public static final class attr {
};
public static final class drawable {
public static final int icon=0x7f020000;
};
public static final class layout {
public static final int main=0x7f030000;
};
public static final class string {
public static final int app_name=0x7f040000;
};
};

Android專案的R.java檔用來索引定義在這個檔案的內裡使用的資源,開發人員可以在程式碼內使用這個類別來做為方便參考的索引記錄。

參考資料:
Android SDK Document http://code.google.com/android/documentation.html

深入淺出Android程式設計(25)-執行程式碼,以「Hello,Android!」專案說明

如何執行程式碼

在Eclipse使用ADT外掛套件,就很容易就可以執行專案程式,進入Eclipse平台,選取選單「Run」中的「Run Configurations…」選項,如圖65所示。




圖65

進入Run Configurations視窗,選取左邊的專案型態為「Android Application」的項目,按下滑鼠右鍵,選取「New」選項,建立新的配置設定,預設會依目前的專案,自動建立所屬的配置設定。如圖66所示



圖66

新的配置設定視窗,如圖67所示。在「Name」欄位上輸入「HelloAndroid」配置名稱欄位值,切換到「Android」頁標籤,點選「Browse...」來選擇所屬的專案,而ADT外掛套件會掃瞄專案內的每一個Activity的子類別加到Activity標籤下的下拉項目,因為目前Hello,Android專案只有一個Activity,所預設值就直接選取即可,其他項目使用預設值即可。如圖68所示。



圖67



圖68

接下來就是要執行程式了,進入Eclipse平台,選取選單「Run」中的「Run」選項,來執行應用程式。如圖69所示。



圖69

下一步在執行那一種應用程式的視窗,選取「Android Application」,就會啟動Android的模擬器,來執行應用程式,如圖70所示。完成執行後,就會在模擬器畫面上出現結果。如圖71所示。



圖70



圖71

上述就是執行的步驟,在下一個章節就是介紹如何安排介面上設計及其他檔案的作用。

參考資料:
Android SDK Document http://code.google.com/android/documentation.html

2009年12月8日 星期二

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

下一步,我們要做的Prototyping,就是進行設定資料的動作。一進入設定資料的畫面,就有三個選項列表,分別是類別設定、帳戶設定、歸屬設定等選項。如圖15所示。


可以依據使用者目前想要設定那方面的資料,再點選進入。


圖15


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上,給大家分享這方面的資訊。

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

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

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

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

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

2009年7月24日 星期五

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

很抱歉,之前公司比較忙碌。所以,預計八月份會陸續更新文章。而且,會以Android 1.5的版本來更新文章。

在之前的章節中,從如何安裝Android SDK、如何安裝Eclipse等開發工作,到如何在Eclipse平台上建立Android專案並設定載入配置、如何執行程式、如何進行除錯程式的動作。
但是,都是分別來說明,沒有將這些步驟連接起來。所以,從這個章節開始,會以一個簡單的「Hello,Android!」專案,來將所有步驟連接起來講解,也會將程式結構內一些重要的屬性、方法來加以描述。

「Hello,Android!」專案,主要的功能,只有在模擬器上顯示「Hello,Android!」等字串的作用,也許會覺得很簡單,但是,卻可以讓讀者了解Android的基本程式架構,為後續更複雜的範例專案打下基礎。
主要的操作步驟及內容說明,如下所述:
A. 如何建立專案
B. 如何建立介面
C. 執行程式碼

後續再說明比較詳細的說明:
D. 如何將介面升級到XML方式來排版
E. 如何進行專案除錯
F. 如何用非Eclipse平台來建立專案


如何建立專案

要建立一個專案再簡單不過了,在Eclipse平台,使用ADT外掛讓Android開發在一瞬間就可以建立了,相關的安裝,請參考之前的章節。下述為建立專案的步驟:

1.進入Eclipse平台,選取選單「File」中的「New」選項,再選取「Project...」選項,進入開啟新專案的視窗,如圖63所示。


圖63

進入開啟新專案的視窗,如圖63所示。在專案類別中,選取「Android」裡面的「Android Project」,然後按下「Next」按鈕,進行下一個步驟。

2. 填入Android專案所需要的明細資料,如下所述:
在建立新專案的視窗填入這個專案的相關細節,所屬欄位意義:
輸入欄位意義如下:
欄位名稱
欄位描述
Project Name
專案名稱,包含這個專案的檔案夾或是目錄的名稱。
Package Name
套件名稱,Java的習慣是用套件名稱來區分不同的類別(class),依照專案的不同,會起不同的路徑名稱。
Activity Name
這個專案的主要類別的名稱,這個類別是一個Android的Activity類別的子類別。一個Activity類別是一個簡單的啟動程式和控制程式的類別。它可以根據需要建立介面。
Application Name
顯示在應用程式上的標題名稱。

要輸入的欄位值如下:
欄位名稱
欄位輸入值
Prjoect Name
HelloAndroid
Package Name
com.android.hello
Activity Name
HelloAndroid
Application Name
Hello,Android

圖64

3. 當按下「Finish」按鈕後,Eclipse ADT就會自動產生的樣版程式HelloAndroid.java,內容如下所述:

public class HelloAndroid extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
}
}

再下一個章節,再來修改程式碼,來顯示字串「Hello,Android!」。

參考資料:
Android SDK Document http://code.google.com/android/documentation.html