Upload
lykhanh
View
228
Download
2
Embed Size (px)
Citation preview
VB.NET 視窗程式設計進階應用:Android App
NTU CSIE
講師:張傑帆
使用VB語言建立Android App[兒童數學訓練]
Android與B4A的基礎
下載與安裝Basic4android
建立第一個Android App
GUI設計工具
B4A的Visual Basic語言
Android與B4A的基礎
Android的基礎
Basic4android整合開發環境
Android的基礎-行動作業系統
Android是行動裝置和網路上的一個熱門名詞,代表一套針對行動裝置開發的免費作業系統平台。目前Android並沒有統一的中文名稱,在台灣直接使用英文名稱Android(發音:['æ ndrɔid]),在大陸地區的譯名為安卓或安致。
Android是一套使用Linux作業系統為基礎開發的開放原始碼(Open Source)作業系統,最初主要是針對手機等行動裝置使用的作業系統,現在Android已經逐漸擴充到平板電腦、筆電和其他領域,例如:電子書閱讀器、MP4播放器、相機和Internet電視等。
17-1-1 Android的基礎-
版本
Android版本 釋出日期 代號
1.5 2009/4/30 Cupcake(紙杯蛋糕)
1.6 2009/9/15 Donut(甜甜圈)
2.0/2.1 2009/10/26 Eclair(閃電泡芙,法式奶油夾心甜點)
2.2 2010/5/20 Froyo(冷凍乳酪)
2.3 2010/12/6 Gingerbread(薑餅)
3.0/3.1/3.2 2011/2/22 Honeycomb(蜂窩)
4.x 2011/10/19 Ice Cream Sandwich(冰淇淋三明治)
4.1/4.2 2012/6/28和10/29 Jelly Bean(雷根糖)
Basic4android整合開發環境-簡介1
Basic4android(B4A)是以色列Anywhere Software公司開發的整合開發環境,這是針對Android平台開發的一套簡單且功能強大的快速應用程式開發工具(Rapid Application Development,RAD)。
Basic4android是一套整合開發環境IDE,可以讓Visual Basic語言的使用者直接使用BASIC語言來開發Android App,B4A能夠自動將開發者撰寫的BASIC程式碼編譯轉換成Java程式碼來建立原生的Android應用程式,換句話說,其執行效能並不會打折扣。
Basic4android整合開發環境-簡介2
B4A使用的BASIC語言非常類似微軟Visual Basic語言(雖然不是百分之一百相同,不過差異不大,開發者可以很容易上手),只是額外增加很多物件的支援。在Android App的開發支援部分,B4A提供功能強大的GUI設計工具,可以直接使用類似Visual Studio表單設計工具來建立支援各種螢幕尺寸和解析度的使用介面,而不用自行撰寫XML文件來定義介面。
B4A內建功能強大的函數庫和外部模組,和其他廠商或個人開發的函數庫,可以讓我們輕鬆開發各種進階功能的Android App,包含:SQLite資料庫、GPS定位服務、藍芽、相機、XML剖析、Web服務、JSON、動畫、圖表和繪圖等Android App。
Basic4android整合開發環境-版本
B4A開發的Android App支援所有版本的Android智慧型手機和平板電腦,而且不用任何權利金就可以發佈至Google Play。目前B4A共提供兩種版本(兩個版本的功能完全相同,其差異只有免費升級的期限不同),如下所示:
Basic4android企業版:提供2年免費升級服務,和Basic4android社群的完整存取權限。
Basic4android標準版:提供2個月免費升級服務,和Basic4android社群的完整存取權限。
下載與安裝Basic4android
下載與安裝Basic4android
啟動與結束Basic4android
在行動裝置安裝B4A-Bridge
下載與安裝Basic4android-說明
現在,我們就可以從網路下載與安裝Basic4android,和在行動裝置安裝B4A-
Bridge來建立Android App的開發環境。為了方便說明,本章並沒有安裝JDK和Android SDK元件,讀者需要擁有一台Android智慧型手機或平版電腦的實機,才能編譯、安裝和執行Android App。
下載與安裝Basic4android-下載
Basic4android測試版可以在官方網站免費下載,其網址如下所示:
http://www.basic4ppc.com/index.html
下載與安裝Basic4android-安裝
Basic4android測試版提供稱為「遠端編譯模式」(Remote Compilation Mode)的編譯模式,此模式可以讓我們的Windows作業系統電腦不用安裝JDK和Android SDK元件,就可以直接在行動裝置上編譯、安裝和執行Android App,當然,讀者一定需要擁有一台實機的Android智慧型手機或平版電腦,才能使用此編譯模式。
在本章為了簡化步驟,筆者準備直接使用遠端編譯模式來建立Android App,此時除了Windows作業系統的開發電腦需要安裝Basic4android,行動裝置也需要安裝對應的連接程式B4A-Bridge,詳見第17-2-3節的說明。
啟動與結束Basic4android-啟動
在Windows 8作業系統開始頁面,按一下【Basic4android】應用程式磚或按二下桌面捷徑來啟動Basic4android。
啟動與結束Basic4android-結束
離開Basic4android請執行「File>Exit」指令。
在行動裝置安裝B4A-Bridge
連線Google Play安裝B4A-Bridge,如下:
建立第一個Android App
建立第一個Android App
Basic4android的程式結構
建立第一個Android App-步驟一:編輯Android App程式碼
在此步驟是在Main活動模組編輯修改Android App程式碼、指定套件名稱和儲存專案,如下圖所示:
修改程式碼
指定套件名稱
儲存專案
建立第一個Android App-步驟二:勾選允許安裝非Google Play的App
在修改和完成專案編輯與儲存後,在編譯和執行專案前,因為我們是使用遠端編譯模式,所以需要設定智慧型手機允許安裝非Google Play
的Apps,如右圖所示:
建立第一個Android App-步驟三:使用WiFi連接遠端行動裝置
在執行編譯、安裝與執行前,我們需要先連接遠端行動裝置,筆者是以執行Android
4.x版的智慧型手機和WiFi為例,如下圖所示:
建立第一個Android App-步驟四:編譯、安裝和執行Android App
我們可以使用遠端編譯模式,直接在實機上編譯、安裝和執行Android App,執行「Project>Compile & Run」指令,或工具列最後藍色箭頭鈕,就可以看到「Compile & Debug」對話方塊顯示的編譯資訊。
Basic4android的程式結構-活動的基礎
活動是Android應用程式與使用者互動的元件,可以用來定義使用者經驗,它也是唯一可以讓使用者看到的元件。Android應用程式可以建立一至多個活動來處理應用程式所需的不同互動。
一般來說,一個活動就是使用者在行動裝置上看到的單一螢幕畫面(大多是佔滿整個螢幕,不過也有可能是對話方塊),一個Android應用程式通常擁有一至多個活動,如同Web網站擁有多頁網頁。
Basic4android的程式結構-程式結構
Sub Process_Globals
End Sub
Sub Globals
End Sub
Sub Activity_Create(FirstTime As Boolean)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Basic4android的程式結構-程式結構說明
Activity_Create(FirstTime As Boolean):這是當活動建立時呼叫的事件處理,表示活動目前在啟動狀態的前景,程序參數FirstTime是一個布林值,可以判斷是否是第一次建立,我們通常會在此程序載入GUI設計工具建立的版面配置檔,即使用介面。
Activity_Resume:此程序是在建立活動後馬上呼叫,或是從背景暫停狀態返回前景啟動狀態時呼叫。
Activity_Pause (UserClosed As Boolean):它是當活動從前景啟動狀態進入背景暫停狀態時呼叫,程序參數UserClosed是一個布林值,可以判斷是否是使用者操作才進入背景。
Basic4android的程式結構-
事件驅動程式設計
B4A和Visual Basic一樣都是使用事件驅動程式設計,整個程式結構是在處理各種事件的事件處理程序,目前只有活動事件,當我們使用第GUI設計工具新增介面元件後,在Android稱為View視圖(即Visual Basic控制項),例如:新增一個名為myButton介面元件時(Android稱為View),就可以在Main活動模組建立處理Click事件的事件處理程序,如下所示:
Sub myButton_Click
Msgbox("按下按鈕!", "")
End Sub
GUI設計工具-說明
對於使用Eclipse IDE和Android SDK的開發者來說,雖然也有視覺化開發工具,不過,因為功能不強,所以,大多數開發者仍然是使用XML文件,以XML標籤來定義版面配置(Layouts),即建立活動的使用介面。
Basic4android的GUI設計工具(Designer)是一套功能強大的視覺化工具,可以如同使用Visual Studio設計表單一般的建立Android App的使用介面(即版面配置),支援連接實機、模擬器或B4A抽象設計工具(Abstract Designer)來建立版面配置。
GUI設計工具-步驟一:啟動Basic4android新增專案
我們可以從啟動Basic4android開始,新增本節範例的專案,專案名稱是【兒童數學訓練】,套件名稱是【ch17.gui.b4a.example】,如下圖所示:
GUI設計工具-步驟二:使用B4A-Bridge連接行動裝置
在此步驟是連接測試執行的行動裝置,B4A
支援Android模擬器、使用USB連接實機,或使用B4A-Bridge以Wifi或藍芽連接行動裝置,筆者是使用B4A-Bridge以Wifi連接。
GUI設計工具-步驟三:開啟GUI設計工具連接實機
在成功使用B4A-Bridge以Wifi將B4A連接行動裝置的智慧型手機後,我們就可以開啟GUI設計工具和連接實機來建立版面配置,如下圖所示:
GUI設計工具 Android實機
GUI設計工具-步驟四:在GUI設計工具新增介面元件
在開啟GUI設計工具和成功連接實機後,我們就可以開始新增介面元件,在Android稱為視圖(View),如下圖所示:
GUI設計工具-步驟五:在GUI設計工具設定介面元件的屬性
在完成介面元件的新增後,接著就可以設定各介面元件的屬性,請在「Abstract Designer」視窗選【Button1】,就可以在「Designer」視窗更改選擇介面元件的屬性,如右圖所示:
GUI設計工具-步驟六:自動產生程式碼與儲存版面配置1
我們已經完成版面配置的介面設計,接下來需要儲存版面配置,在Designer執行「File>Save」指令,可以看到「Save
layout」對話方塊。
GUI設計工具-步驟六:自動產生程式碼與儲存版面配置2
因為在活動模組的程式碼需要參考版面配置的元件,此時,我們可以使用Designer
的產生成員功能來建立,如下圖所示:
GUI設計工具-步驟七:編輯事件處理程序的程式碼1
在Activity_Create事件處理程序使用Activity物件的LoadLayout方法載入之前建立的版面配置檔,即參數Main,然後指定Title屬性的標題文字,NewQuestion程序可以產生新數學問題,如下所示:
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Main")
Activity.Title = "兒童數學訓練"
NewQuestion
End Sub
GUI設計工具-步驟七:編輯事件處理程序的程式碼2
新增NewQuestion程序,它是使用亂數產生2個1~10的數字來建立新數學問題,如下所示:
Sub NewQuestion
lblNumber1.Text = Rnd(1, 10)
lblNumber2.Text = Rnd(1, 10)
lblResult.Text = "請輸入答案..."
edtResult.Text = ""
End Sub
GUI設計工具-步驟七:編輯事件處理程序的程式碼2
在btnAction_Click事件處理程序使用If Then/Else條件敘述來判斷按鈕的標題文字,如果有輸入就判斷答案是否正確,否則產生下一題數學問題,如下所示:
Sub btnAction_Click
If btnAction.Text = "回答" Then
If edtResult.Text = "" Then
Msgbox("沒有輸入答案...", "錯誤")
Else
If edtResult.Text = lblNumber1.Text + lblNumber2.Text Then
lblResult.Text = "答對了..."
btnAction.Text = "下一題"
Else
lblResult.Text = "答錯了, 再試一次.."
End If
End If
Else
NewQuestion
btnAction.Text = "回答"
End If
End Sub
GUI設計工具-步驟八:編譯與執行Android App
請執行「Project>Compile &
Run」指令,或工具列最後藍色箭頭鈕,可以看到「Compile & Debug」對話方塊顯示的編譯資訊。等到完成編譯,請回到智慧型手機安裝和開啟應用程式可以看到執行結果,如右圖所示:
B4A的Visual Basic語言-資料型態
因為Android原生開發語言是Java語言,所以B4A支援的資料型態也是直接源於Java語言,這些型態都是物件,其說明如下表所示:
資料型態 說明 範圍
Boolean 布林 False或True
Byte 位元組8Bits -128 ~ 127
Short 短整數16Bits -32768 ~ 32767
Int 整數16Bits -2147483648 ~ 2147483647
Long 長整數64Bits -9223372036854775808 ~ 9223372036854775807
Float 單精度浮點數32Bits 1.4E-45 ~ 3.4028235E38
Double 雙精度浮點數64Bits 2.2250738585072014 E -308 ~
1.7976931348623157 E 308
Char 字元 N/A
String 字串 N/A
B4A的Visual Basic語言-
變數宣告
B4A是使用Dim關鍵字來宣告變數,As關鍵字指定資料型態,使用「=」號指定變數的初值,如下所示:
Dim Sum As Float
Dim Capital, Interest, Rate As Double
Dim i = 0, j = 2, k = 15 As Int
Dim name = "Joe" As String, rate = 1.1 As
Double, flag = True As Boolean
B4A的Visual Basic語言-陣列
B4A陣列也是使用Dim關鍵字來宣告,如下所示:
Dim Names(10) As String
上述程式碼宣告10個元素的Names陣列,在括號中是元素數(與Visual Basic不同),除了可以使用文字值來指定外,也可以使用變數來指定陣列尺寸,其索引值是從0開始,所以範圍是0~9。
B4A陣列的初值需要使用Array關鍵字來宣告,如下所示:
Dim Grade() As Int
Grade = Array As Int(89, 76, 61)
B4A的Visual Basic語言-
運算子
B4A算術運算子不支援Visual Basic的整數除法「\」,指數運算子則是使用Power()
函數取代,如下所示:
123 即 Power(12, 3)
在比較運算子部分,B4A不支援Is、IsNot和Like運算子。邏輯運算子支援Or、And和Not,其中Not需要使用括號,即Not ()。
B4A的Visual Basic語言-
條件敘述1
B4A條件敘述支援和Visual Basic相同的If/Then和If Then/Else,只有If Then/ElseIf多選一條件敘述不同,在B4A是分開的Else If,如下所示:
If condition1 Then
…
Else If condition2 Then
…
Else
…
End If
B4A的Visual Basic語言-
條件敘述2
另一種Select Case/End Select多選一條件敘述也不同,B4A只需Select/End Select,不用加上Case的Select Case,如下所示:Select Action
Case Activity.ACTION_UP
…
Case Activity.ACTION_DOWN
…
Case Activity.ACTION_MOVE
…
End Select
B4A的Visual Basic語言-
迴圈結構
在B4A迴圈部分支援For/Next(Next關鍵字後不支援加上計數器變數,例如:Next i)、For Each In、Do While/Loop和Do Until/Loop,但不支援後測式迴圈Do/Loop While和Do/Loop Until。
B4A支援Continue繼續迴圈和跳出迴圈,不過,B4A只需Exit和Continue關鍵字;Visual Basic需要加上Exit/Continue Do或Exit/Continue For。
B4A的Visual Basic語言-
錯誤處理敘述
B4A支援和Visual Basic相同的Try/Catch/End Try,不過,不支援Finally
程式區塊。
B4A的Visual Basic語言-
程序、函數和方法1
B4A不論函數、程序和方法都是使用Sub宣告(沒有Function關鍵字),不過,在Sub
程序一樣可以使用Return關鍵字來傳回值,如下所示:
Sub CalInterest(Capital As Double, Rate As
Double) As Double
Dim Amount As Double
Amount = Capital * Rate / 100
Return Amount
End Sub
B4A的Visual Basic語言-
程序、函數和方法2
如果Sub宣告的程序沒有參數,在宣告時不需加上括號,呼叫時也不需使用括號(B4A
編譯器會誤認為是陣列),如下所示:
Sub NewQuestion
…
End Sub
上述程序在呼叫時只需使用NewQuestion,不可以使用NewQuestion(),如下所示:
NewQuestion
本章結束Take a Break …..