我們這款背單詞App的特點是使用個性化的單詞本,會用到文件管理器組件調(diào)用外部文件及二維列表的知識,借此掌握CSV文件和列表之間的轉(zhuǎn)換技巧。
App名稱“背單詞”,背景圖用張黑板圖片,從上到下的按鍵有單詞、釋義、發(fā)音、下一個。
點擊“單詞”切換單詞的顯示與隱藏。點擊“釋義”切換釋義的顯示與隱藏。點擊“發(fā)音”可以再念讀一遍,也可以勾選“讀釋義”的復(fù)選框,讀中文解釋(需手機語音庫支持)。
初始狀態(tài)下單詞和釋義都隱藏,可以直接用聽寫的方式來背單詞,再通過點擊顯示需要的內(nèi)容。點擊“下一個”隨機切換單詞庫中的任意單詞。
準備一張豎屏的黑板圖片作為背景,一個正方形的圖標。按后文的方法準備一份英語單詞文本english.csv。
新建項目取名“english”,將2個圖片和english.csv上傳進素材。并根據(jù)圖1設(shè)計組件。
1.組件Screen,命名Screen1,背景圖片為background.png,圖標icon.png,屏幕方向鎖定豎屏,標題“背單詞”。
2.使用5個水平布局依次垂直排列,高和寬充滿,背景顏色透明,通過水平居中,設(shè)置垂直居下或者居上,讓各個按鈕和標簽處于合適的位置。
3.需要4個按鈕,均為圓角按鈕,根據(jù)重要程度設(shè)定不同的字體顏色、粗細和大小,由于需要用于觸發(fā)相應(yīng)事件,勾選“顯示交互效果”。
按鈕“單詞”,點擊切換單詞的顯示與隱藏,文本“單詞:”。
按鈕“釋義”,點擊切換釋義的顯示與隱藏,文本“釋義:”。
按鈕“發(fā)音”,點擊后會再次讀出單詞或釋義(由復(fù)選框控制),文本“發(fā)音”。
按鈕“下一個”,用于切換到詞庫的下一個單詞,文本“下一個”。
4.標簽2個,標簽“標簽_單詞”用于顯示單詞具體內(nèi)容,位于按鈕單詞右邊,文本“study”。標簽“標簽_釋義”,放置釋義內(nèi)容,位于按鈕釋義的右邊,文本“學(xué)習(xí)”。
5.復(fù)選框1個,用于選擇是念讀單詞還是釋義,文本“念讀釋義”。
6.文件管理器,打開英語單詞表文件。使用文本語音轉(zhuǎn)換器,把文字轉(zhuǎn)換成聲音(圖1)。
1.單詞表的轉(zhuǎn)換
我們常見的表格是Excel格式的,想要在AppInventor中使用表格可以將其轉(zhuǎn)存成CSV格式。CSV格式的文件其實是由逗號作為分隔符的文本文件,可以用記事本打開。由于通過Excel另存的CSV格式文件默認編碼為ANSI,這種編碼在AppInventor中打開會出現(xiàn)中文亂碼,因此需要先在Excel中整理好表格,第一列中文,第二列放對應(yīng)英文。然后保存為CSV文件(圖2)。
通過記事本打開這個CSV文件,然后另存為UTF-8編碼格式。最后修改后綴將english.txt改為english.csv(圖3)。
2.單詞表的導(dǎo)入
將english.csv上傳到素材,當(dāng)屏幕初始化時,調(diào)用文件管理器讀取文件。文件名要把目錄地址一并加上“/AppInventor/assets/english.csv”。這樣設(shè)置是因為在AppInventor開發(fā)網(wǎng)站上傳的所有素材文件,在模擬運行時都是放在手機的“/AppInventor/assets/”目錄中。當(dāng)通過手機運行APK文件時,不妨先通過Al伴侶APP進行連接后再運行,這樣能確保在“/AppInventor/assets/”錄中存在english.csv文件,否則會因沒有裝載文件而不能正常運行(圖4)。
然后,初始化全局變量單詞列表,當(dāng)文件管理器獲得文本時,將CSV轉(zhuǎn)列表。這時外部的文件已經(jīng)轉(zhuǎn)換為內(nèi)部的列表了(圖5)。
CSV文件實際上是被轉(zhuǎn)換為了一個二維列表,即CSV文件中的每一行先轉(zhuǎn)換成一個列表,該行的每一列元素轉(zhuǎn)變?yōu)樵摿斜碇械囊粋€列表項。比如,文件管理器讀取english.csv文件,將它轉(zhuǎn)換為單詞列表,該單詞列表的列表項又是列表,由兩項組成,第一項是釋義,第二項是對應(yīng)單詞,列表內(nèi)容示意如圖6。
3.單詞表的使用
當(dāng)點擊“下一個”按鈕時,從單詞列表中隨機取出一個單詞。這里可以設(shè)一個局部變量“隨機單詞”,從單詞列表中隨機取出一個單詞;然后分別取出它的第一項給標簽釋義,第二項給標簽單詞;再判斷復(fù)選框是否被選中,如果選中,念讀中文釋義,否則念讀英文單詞。具體代碼模塊如圖7。
4.隨機產(chǎn)生下一個單詞
如圖所示有兩種產(chǎn)生隨機單詞的方法(圖8)。
本App的難點就是CSV文件的使用和隨機單詞的抽取。下面是其他幾個按鈕的邏輯設(shè)計,比較簡單了。
1.顯示/隱藏單詞
點擊“單詞”按鈕時,可以顯示或隱藏單詞。只需取標簽原來的顯示狀態(tài)的相反狀態(tài)即可(圖9)。
2.顯示/隱藏釋義
點擊“釋義”按鈕時,可以顯示或隱藏釋義,用邏輯“非”即可(圖10)。
3.發(fā)音功能
點擊“發(fā)音”按鈕時,首先判斷復(fù)選框的選中狀態(tài),從而判斷念讀中文釋義還是英語單詞,然后發(fā)音,點擊一次,念讀一遍(圖11)。
由于使用了中英文語音,其中中文語音需要在手機上安裝相關(guān)的引擎。一般手機上會默認安裝中文語音引擎。如果無法在手機上發(fā)出中文語音,可以在應(yīng)用商店中搜索并安裝“訊飛語音+”。安裝后在手機中點“設(shè)置→高級設(shè)置→語言和輸入法→文字轉(zhuǎn)語音(TTS)輸出→訊飛語音+”(以華為手機為例)就可以了。
如果程序順利運行,那么還有什么可以改進的?做一些個性化的完善吧,如增加單詞次數(shù)統(tǒng)計,顯示背了多少個單詞;增加計時功能,統(tǒng)計花了多少時間等。
源代碼和單詞表可以關(guān)注“壹零社”公眾號下載。