宋國(guó)柱,王會(huì)霞/Song Guozhu,Wang Huixia
(黃岡師范學(xué)院教育科學(xué)與技術(shù)學(xué)院 黃岡438000)
目前,移動(dòng)學(xué)習(xí)這種新型的學(xué)習(xí)形式具有教學(xué)個(gè)性化、學(xué)習(xí)便捷性、情境相關(guān)性、跨時(shí)空性、交互性、移動(dòng)性、及時(shí)性、超媒體性以及泛在性等特點(diǎn),可以為學(xué)習(xí)者提供因時(shí)、因地、隨需要而發(fā)生的數(shù)字化學(xué)習(xí),從而決定了它在未來教育中將創(chuàng)造一個(gè)全新的學(xué)習(xí)和教學(xué)模式,并將達(dá)到一些現(xiàn)在教學(xué)模式無法達(dá)到的效果[1]。在研究探索中發(fā)現(xiàn),目前移動(dòng)學(xué)習(xí)側(cè)重于教與學(xué)的關(guān)系、教學(xué)模式和課程資源開發(fā)與建設(shè)等[2]。但如何將傳統(tǒng)的“黑板”教學(xué)方式與移動(dòng)技術(shù)相結(jié)合,以實(shí)現(xiàn)教學(xué)界面和語音實(shí)時(shí)同步的交互學(xué)習(xí)有待進(jìn)一步加強(qiáng)。
移動(dòng)技術(shù)的迅速發(fā)展、移動(dòng)運(yùn)營(yíng)平臺(tái)和移動(dòng)服務(wù)在教育領(lǐng)域的應(yīng)用為移動(dòng)學(xué)習(xí)奠定了堅(jiān)實(shí)的物質(zhì)基礎(chǔ)。目前在移動(dòng)技術(shù)中,Android平臺(tái)成為全球最受歡迎的移動(dòng)智能終端平臺(tái)之一。本文針對(duì)當(dāng)前流行的Android 圖形/圖像技術(shù),設(shè)計(jì)并實(shí)現(xiàn)一個(gè)具有交互功能的簡(jiǎn)易黑板。首先對(duì)黑板的功能模塊、類、界面進(jìn)行設(shè)計(jì),然后對(duì)黑板的相關(guān)技術(shù)及實(shí)現(xiàn)進(jìn)行詳細(xì)闡述,最后搭建開發(fā)平臺(tái)測(cè)試了該系統(tǒng)。這對(duì)一對(duì)多實(shí)時(shí)交互式移動(dòng)學(xué)習(xí)的探索有一定的啟發(fā)意義。
通過對(duì)實(shí)際需求進(jìn)行調(diào)查分析可以發(fā)現(xiàn),黑板的功能模塊主要包括3 個(gè)部分,如圖1所示。
圖1 黑板功能模塊
①粉筆:選擇粉筆的顏色和寬度。
②黑板擦:擦除黑板中所寫的內(nèi)容。
③保存:保存版面的內(nèi)容。
根據(jù)黑板的功能模塊需求共設(shè)計(jì)了兩個(gè)類:DrawActivity 和DrawView。類的設(shè)計(jì)如圖2所示。
①DrawActivity 類:主要實(shí)現(xiàn)加載黑板視圖、創(chuàng)建選項(xiàng)菜單以及響應(yīng)菜單項(xiàng)事件等功能。
②DrawView 類:主要實(shí)現(xiàn)畫筆的創(chuàng)建、(顏色、寬度、填充方式等)初始化、畫布的創(chuàng)建、路徑的繪制、黑板版面保存和黑板擦等功能。
DrawView 類中,onTouchEvent()方法為黑板添加觸摸事件監(jiān)聽器。該方法的詳細(xì)設(shè)計(jì)如圖3所示。
該方法對(duì)黑板觸摸事件做出處理,觸摸的動(dòng)作包括按下、移動(dòng)和放開。按下時(shí),將繪圖的起始點(diǎn)移到該坐標(biāo)點(diǎn)的位置;移動(dòng)時(shí),當(dāng)移動(dòng)位置(x,y)大于5 個(gè)像素時(shí),使用路徑繪制軌跡;放開時(shí),在緩存畫布上繪制路徑,并重置路徑對(duì)象。最后更新視圖。
黑板的界面設(shè)計(jì)采用幀布局中添加畫布作為整個(gè)黑板版面,在整個(gè)版面中使用菜單加載黑板的功能模塊,如粉筆、黑板擦、保存均作為菜單項(xiàng)。
在Android中,繪制圖像時(shí)最常用的就是Paint類、Canvas 類、BitmapFactory 類和Path 類。
圖2 類的設(shè)計(jì)
圖3 onTouchEvent( )方法詳細(xì)設(shè)計(jì)
(1)Paint 類
代表畫筆,用來描述圖形的顏色和風(fēng)格,如線寬、顏色、透明度和填充效果等信息。使用Paint 類時(shí),首先需要?jiǎng)?chuàng)建該類對(duì)象,可以通過該類提供的構(gòu)造方法來實(shí)現(xiàn)。通常情況下,創(chuàng)建該類對(duì)象后,可以通過該對(duì)象提供的方法對(duì)畫筆的默認(rèn)設(shè)置進(jìn)行改變,如改變畫筆的顏色、筆觸寬度等[3]。
(2)Canvas 類
代表畫布,通過該類提供的方法,可以繪制各種圖形(如矩形、圓形和線條等)。通常情況下,要在Android中繪圖,首先需要?jiǎng)?chuàng)建一個(gè)繼承自View類的視圖,并且在該類中重寫onDraw(Canvas canvas)方法,然后在顯示繪圖的Activity中添加該視圖。
(3)BitmapFactory 類
代表位圖,是Android 系統(tǒng)中圖像處理的一個(gè)重要類。該類不僅可以獲得圖像文件信息,進(jìn)行圖像剪切、旋轉(zhuǎn)、縮放等操作,還可以指定保存圖像文件的格式。
(4)Path 類
代表路徑,該類中包含一組矢量繪圖,如畫圓、矩形、弧、線條等。其中drawPath()方法,可以將定義好的路徑繪制在畫布上[4]。
黑板的界面設(shè)計(jì)主要包括黑板版面和功能菜單的實(shí)現(xiàn)。黑板版面的實(shí)現(xiàn)是在mail.xml 文件中添加幀布局管理器,然后加載DrawView 類;功能菜單的實(shí)現(xiàn)是在默認(rèn)創(chuàng)建的DrawActivity中,為實(shí)例添加選項(xiàng)菜單。菜單資源toolsmenu.xml 在XML中定義后,可以通過MenuInflator Service的inflate 方法把菜單填充(inflate)到應(yīng)用程序中,然后重寫onOptionsItemSelected()方法,再分別對(duì)各個(gè)菜單項(xiàng)選擇做相應(yīng)的處理。創(chuàng)建選項(xiàng)菜單方法onCreateOptionsMenu(Menu menu)如下。
創(chuàng)建一個(gè)名稱為DrawView的類,該類繼承自android.view.View 類。在DrawView 類中,首先定義程序中所需的屬性,然后添加構(gòu)造方法,并重寫onDraw(Canvas canvas)方法用于設(shè)置背景顏色、繪制cacheBitmap、繪制路徑以及保存當(dāng)前繪制狀態(tài)到棧中,最后調(diào)用restore 方法恢復(fù)所保存的狀態(tài)。在DrawView 類的構(gòu)造方法中,首先獲取屏幕的寬度和高度,并創(chuàng)建一個(gè)與該View 類大小相同的緩沖區(qū),然后創(chuàng)建一個(gè)新的畫面,并實(shí)例化一個(gè)路徑,再將內(nèi)存中的位圖繪制到cacheCanvas中,最后實(shí)例化一個(gè)畫筆,并設(shè)置畫筆的相關(guān)屬性。
在DrawView 類中,重寫onTouchEvent()方法,為該視圖添加觸摸屏事件監(jiān)聽器,在該方法中,首先獲取觸摸事件發(fā)生的位置,然后應(yīng)用switch 語句對(duì)事件的不同狀態(tài)添加響應(yīng)代碼,最后調(diào)用invalidate()方法更新視圖。onTouchEvent()方法的實(shí)現(xiàn)如下。
橡皮擦的功能是通過clear()方法實(shí)現(xiàn)。在該方法中,setXfermode(Xfermode xfermode)方法用于設(shè)置圖形重疊時(shí)的處理方式,如合并、交集和并集等。
保存當(dāng)前版面的是save()方法,在該方法中,調(diào)用saveBitmap()方法將當(dāng)前繪圖保存為PNG 格式的圖片。在saveBitmap()方法中,首先在SD 卡上創(chuàng)建一個(gè)文件,然后創(chuàng)建一個(gè)文件輸出流對(duì)象,通過調(diào)用Bitmap 類的compress()方法將繪圖內(nèi)容壓縮為PNG 格式并輸出到文件輸出流對(duì)象中,最后將緩沖區(qū)的數(shù)據(jù)全部寫到輸出流中,并關(guān)閉輸出流對(duì)象。SaveBitmap()方法的實(shí)現(xiàn)如下。
本系統(tǒng)的開發(fā)與調(diào)試采用Android SDK[5]自帶的模擬器作為實(shí)驗(yàn)平臺(tái),開發(fā)平臺(tái)的搭建在此不予詳述。該平臺(tái)生成的.apk 文件可以發(fā)布和安裝到實(shí)體智能手機(jī)中運(yùn)行,運(yùn)行效果如圖4所示。
圖4 簡(jiǎn)易黑板界面
基于Android的簡(jiǎn)易黑板具有操作簡(jiǎn)便、功能明確的特點(diǎn),為移動(dòng)學(xué)習(xí)、辦公提供了良好的人機(jī)界面交互環(huán)境。但該系統(tǒng)在工具欄的設(shè)計(jì)以及基于移動(dòng)網(wǎng)絡(luò)的界面同步等方面的功能還有待改進(jìn)。
[1]郭紹青,黃建軍,袁慶飛.國(guó)外移動(dòng)學(xué)習(xí)應(yīng)用發(fā)展綜述[J].外國(guó)電教,2011,(5):105-109.
[2]方海光,王紅云,黃榮懷.移動(dòng)學(xué)習(xí)的系統(tǒng)環(huán)境路線圖[J].現(xiàn)代教育技術(shù),2011,(21):14-20.
[3]明日科技.Android 從入門到精通[M].北京: 清華大學(xué)出版社,2012.
[4]BILL P,BRIAN H.Android Programming[M].北京:人民郵電出版社,2014.
[5]Android NDK (April 2015)[EB/OL].http://developer.android.com/sdk/ndk/,2015.