要學習本教程,請先參考下面的教程:
安裝 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:
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