App Inventor微型資料庫元件:螢幕初始化事件顯示圖片

App Inventor有時候會希望手機開啟應用就先進行某些處理,例如載入顯示特定圖片。本文介紹如何利用微型資料庫元件及螢幕初始化事件,設計打電話相關程式。

上一節最終完成了一款APP,利用圖片選擇器將電話通訊錄的封面變成是手機圖片,當時初步測試合乎預期,可是,如果安裝到手機上多做幾次測試,很快察覺到有個嚴重問題,四個聯絡人都設置好圖片之後,退出應用再重新執行,發現圖片都跑掉了,又恢復到原始設定值。

箇中奧妙如上一節第五步驟所示,安卓機器人是一個口令一個動作,設計程式時很容易想得太美好了,例如上一節其實只告訴機器人要換圖片,但是沒有下指令讓它把圖片儲存起來!這一節重點教機器人執行儲存這個指令,如此選好的圖片不會再跑掉。

一、微型資料庫元件

在「畫面編排」頁籤,「元件面板」裡「資料儲存」中的「微型資料庫」:用來儲存app資料的非可視元件。仔細閱讀輔助說明,可知應用操作過程中的變數值,除非透過資料庫執行,否則不會被儲存,每次開啟都是從空白開始。每款app於手機有一個專屬倉庫(電子資料區),每筆資料項是以標籤方式作為識別。本節即以實際範例具體說明此重要元件。

App Inventor微型資料庫元件:螢幕初始化事件顯示圖片 1

二、輸入文字內容

於「程式設計」頁籤,「方塊」裡「內件方塊」拉出「文字」抽屜。在此打算使用第一個最為簡單普遍的「輸入文字內容」,其作用是在程式設計中單純以文字作為內容的一個方塊。

App Inventor微型資料庫元件:螢幕初始化事件顯示圖片 3

三、內件程式方塊

內件方塊和本書之前的專案所引用的方塊性質較為不同,有必要多作說明,其英文原名為「App Inventor Built-in Blocks」,意思是內建於程式設計中,不管專案中使用哪些元件,這些內件方塊皆可使用。其功能類似於非具體對象的抽象語言(language blocks),在線上圖書館(App Inventor Library)有各個內件方塊的完整說明文件可供參考。

App Inventor微型資料庫元件:螢幕初始化事件顯示圖片 5

四、程式行為和屬性

如同第二步驟截圖所示,單單文字方塊就包含了許多稍微複雜的行為和屬性,延續上一步驟,點選「Text blocks」大類別方塊,細部文件中針對每項行為屬性,都有更進一步輔助說明。

熟悉Excel的讀者,應該會發現部份文字方塊項目和Excel文字函數的作用雷同。在Excel可能不會用到所有的文字函數,不過仍然建議有時間多看看有哪些函數可供使用,APP Inventor的文字方塊屬性也是同樣道理,多看多參考總是好的,說不定在往後哪一個情境案例中,剛好會有某項方塊符合所用。

App Inventor微型資料庫元件:螢幕初始化事件顯示圖片 7

五、標籤及儲存數值

先介紹這一節會輔助使用到的文字方塊後,接著進入此節重點。將「方塊」裡的「微型資料庫1」拉出抽屜,取出其中的「呼叫…取得數值…」程式方塊,可以看到在「無標籤時之回傳值」預掛了一個空白的文字方塊,表示為無標籤時的預設值,預設為空白。

另一個典型的資料庫程式方塊為「呼叫…儲存數值」,從這裡清楚看到APP Inventor資料庫是為每個「儲存值」貼上一個「標籤」,以如此方式識別,這個句型也相呼應到上一段所述取得數值事件的句型。

App Inventor微型資料庫元件:螢幕初始化事件顯示圖片 9

六、螢幕初始化事件

在正式組合之前,先再追加一個方塊。這次元件為螢幕「Screen1」本身,它是一個非常特別的元件,即使尚未選取任何元件,「Screen1」已經存在了,其名稱並且無法更改。可以把它理解為App應用本身,所選取事件為「當Screen1.初始化,執行…」,其實就是當應用啟動時,即執行此動作。

App Inventor微型資料庫元件:螢幕初始化事件顯示圖片 11

七、增加註解說明

完整程式設計如圖所示,在累積先前幾個章節範例的基礎上,在此嘗試將程式方塊(程式代碼)翻譯成白話文:當應用啟動時,以資料庫中標籤為「Photo1」的內容值更新按鈕1的圖像,另外當按鈕1長按時,選取手機圖片,將所選取圖片作為按鈕1圖像,並且儲存更新資料庫中標籤「Photo1」的內容(儲存值)。

這裡除了使用上一節所介紹的「摺疊程式方塊」,因應程式益加複雜,同時運用「增加註解」的功能,在螢幕初始化程式方塊加了一道註解,說明其用意,使日後閱讀理解和擴充程式代碼更加方便。

App Inventor微型資料庫元件:螢幕初始化事件顯示圖片 13

設計大頭貼電話App

這一章到目前為止,設計好了一款類似像我的最愛大頭貼的電話APP,雖然功能有了,但充其量只能稱之為開發人員內測版本。因為像按一下撥打電話、長按更改圖片這樣的功能,除了親手設計的開發人員之外,對於外部使用者來講,根本不會知道這個APP用途何在。通常像這樣子會有個較為完整的APP應用佈局,清楚在螢幕上顯現提示各式各樣的標籤和按鈕,以便讓使用者容易上手。關於這一點,預計在之後章節繼續為各位介紹。