要學習本教程,請先參考下面的教程:
安裝 Basic4android 和 Android SDK
Hello world - 安裝Android 模擬器
在這個教程裡面我們要使用設計器來建立layout. 這個layout包括一個文字框和一個按鈕.
使用者需要猜一個隨機的數字. 使用者在文字框裡面輸入數字並通過點按鈕提交猜的數字.
然後系統會通過"toast"資訊來給使用者提示其輸入的數字比系統選擇的數字大還是小.
- 建立一個新工程並儲存它.
-選擇菜單來開啟設計器.
設計器有兩部分組成.一部分是"控制台", "控制台"是IDE 的一部分,它包含所有的屬性和選項:
另外一部分是運行在模擬器上的"可視"元件:
正如其名,可視化面板可以顯示layout,並允許你移動和改變views的大小.
在可視化面板上改變layout 的話,會同時改變控制台上的儲存的值.
由於所有的資料都儲存在控制台上,因此我們不用擔心模擬器崩潰或者被關掉.當你下一次串連上時,layout 會自動重新顯示.
首先要連上裝置.請點Tools - Connect.
這一步需要幾秒鐘時間. 請注意IDE 會一直保持這個串連直到IDE 被關閉,關閉設計器並不斷開這個串連.
使用 Add View menu 菜單來增加一個 Button, 一個 EditText 和一個 Label.
並按來設定相應的屬性和位置:
改變 Activity的 Drawable 屬性為 GradientDrawable來取得過渡色效果.
小貼士 : 當你在小的顯示器工作時,你會發現點了 "Top Most"(在控制台右上方)勾選後會感覺非常方便 .這樣控制台就會顯示在最上方而不會被模擬器擋住.
儲存這個layout,並命名為 Layout1.
layout是一個非常重要的概念 ,因為其在你的代碼和設計之間建立了完全的分界.
layout被儲存成一個檔案,副檔名為".bal".每個工程可以有好幾個這樣的檔案,除非你顯式的載入一個layout檔案,否則不會在你工程中造成任何影響.
一旦你儲存了一個layout, 它會自動的被加入"File manager". 你可以在 IDE右面的"Files"面板裡面看見它.
我們將要使用button的 click 事件.
每個 view 都有一個EventName的值. 在設計器裡面是屬性, 當在程式中添加view 時,會作為一個參數傳遞到Initialize過程中.
為了使用一個事件,你應該使用下面的格式寫一個子程式(其實很簡單):
Sub <EventName>_<Event> (event parameters).
在設計器裡,EventName屬性預設為view的名字.
如果我們要通過按鈕的EventName的值來調用按鈕的click 的事件的話,我們應該按照下面的格式寫:
Sub Button1_Click
So here is the complete code:
Code:
Sub Process_Globals
End Sub
Sub Globals
Dim MyNumber As Int
Dim EditText1 As EditText'will hold a reference to the view added by the designer
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout1") 'Load the layout file.
MyNumber = Rnd(1, 100) 'Choose a random number between 1 to 99
End Sub
Sub Button1_Click
If EditText1.Text > MyNumber Then
ToastMessageShow("My number is smaller.", False)
Else If EditText1.Text < MyNumber Then
ToastMessageShow("My number is larger.", False)
Else
ToastMessageShow("Well done.", True)
End If
EditText1.SelectAll
End Sub
一些注意事項:
- 每個activity 模組都有一個Activity 對象,你可以使用這個對象來訪問activity.
- Activity.LoadLayout 可以用來載入layout檔案.
- 還有其他views也可以載入 layout 檔案. 例如Panel 和 TabHost. 對於TabHost,每個頁面都可以通過載入layout檔案來建立.
- 為了訪問在設計器裡面添加的views, 我們需要在Sub Globals裡面定義它們.
- ToastMessageShow 用來顯示一段短的資訊, 並且會在一小段時間後消失.
在這裡使用toast message其實不是非常合適,因為有時當軟鍵盤開啟時會使其無法提示.
寫事件子程式的小貼士:
在IDE裡, 先寫Sub,然後按空格鍵. 你會看到小的提示 "press tab to insert event declaration".
再按 tab鍵, 選擇物件類別並選擇事件.
現在你做的就是寫需要的事件名和按斷行符號.
支援多種螢幕解析度和方向
每個layout檔案可以包含一系列layout變體.每個layout變體儲存views的不同的位置和大小的值.
例如, 你改變任何view的文本的話,所有的變體的會自動改變. 然而當你改變view 的位置的話,只會影響當前變體的值.
請注意,如果需要的話,按比例縮放會自動進行.這意味著當我們運行在一個高解析度裝置的時候,layout會自動縮放的.
然而你可以為不同的縮放選擇建立不同的變體.
當你載入一個layout檔案時,最匹配裝置的那個變體將會被載入.
一般你需要兩個變體:
- 320 x 480, scale = 1 (160 dpi). 這個是豎向的預設的比例.
- 480 x 320, scale = 1 (160 dpi). 橫向的預設比例.
好, 重新開啟設計器.載入 Layout1 檔案.
選擇 "New Variant" 並選擇 480 x 320 (第二個選項).
選擇模擬器,並通過按Ctrl + F11改變模擬器的方向.
請注意,裝置的layout詳情會在變體列表下面出現.
請如改變layout:
你可以改變當前所選的變體,然後看看它是如何影響可視的layout.
儲存這個layout並運行這個程式.
現在改變模擬器的方向,看看layout是如何對應改變的.
每次當方向改變的時候,Android 就會銷毀老的activity並建立新的activity. 每次 Activity.LoadLayout將會被再次調用. 因此非常不幸,每次要猜的數會被重新選擇. 當然這個會很簡單的改正... 但這不是本教程要做的.
工程檔案在附件下載.
這個教程的最後小貼士:
- IDE的Files菜單下麵包括一個"Export as zip"選項. 用來產生一個包括所有需要檔案的zip檔案.
檔案: http://www.basic4ppc.com/android/fil...ssMyNumber.zip