基于Android的简易黑板设计与实现
2015-12-21宋国柱王会霞SongGuozhuWangHuixia
宋国柱,王会霞/Song Guozhu,Wang Huixia
(黄冈师范学院教育科学与技术学院 黄冈438000)
1 引言
目前,移动学习这种新型的学习形式具有教学个性化、学习便捷性、情境相关性、跨时空性、交互性、移动性、及时性、超媒体性以及泛在性等特点,可以为学习者提供因时、因地、随需要而发生的数字化学习,从而决定了它在未来教育中将创造一个全新的学习和教学模式,并将达到一些现在教学模式无法达到的效果[1]。在研究探索中发现,目前移动学习侧重于教与学的关系、教学模式和课程资源开发与建设等[2]。但如何将传统的“黑板”教学方式与移动技术相结合,以实现教学界面和语音实时同步的交互学习有待进一步加强。
移动技术的迅速发展、移动运营平台和移动服务在教育领域的应用为移动学习奠定了坚实的物质基础。目前在移动技术中,Android平台成为全球最受欢迎的移动智能终端平台之一。本文针对当前流行的Android 图形/图像技术,设计并实现一个具有交互功能的简易黑板。首先对黑板的功能模块、类、界面进行设计,然后对黑板的相关技术及实现进行详细阐述,最后搭建开发平台测试了该系统。这对一对多实时交互式移动学习的探索有一定的启发意义。
2 黑板设计
2.1 功能模块设计
通过对实际需求进行调查分析可以发现,黑板的功能模块主要包括3 个部分,如图1所示。
图1 黑板功能模块
①粉笔:选择粉笔的颜色和宽度。
②黑板擦:擦除黑板中所写的内容。
③保存:保存版面的内容。
2.2 类的设计
根据黑板的功能模块需求共设计了两个类:DrawActivity 和DrawView。类的设计如图2所示。
①DrawActivity 类:主要实现加载黑板视图、创建选项菜单以及响应菜单项事件等功能。
②DrawView 类:主要实现画笔的创建、(颜色、宽度、填充方式等)初始化、画布的创建、路径的绘制、黑板版面保存和黑板擦等功能。
DrawView 类中,onTouchEvent()方法为黑板添加触摸事件监听器。该方法的详细设计如图3所示。
该方法对黑板触摸事件做出处理,触摸的动作包括按下、移动和放开。按下时,将绘图的起始点移到该坐标点的位置;移动时,当移动位置(x,y)大于5 个像素时,使用路径绘制轨迹;放开时,在缓存画布上绘制路径,并重置路径对象。最后更新视图。
2.3 界面设计
黑板的界面设计采用帧布局中添加画布作为整个黑板版面,在整个版面中使用菜单加载黑板的功能模块,如粉笔、黑板擦、保存均作为菜单项。
3 关键技术与黑板实现
3.1 Android 图形/图像处理技术
在Android中,绘制图像时最常用的就是Paint类、Canvas 类、BitmapFactory 类和Path 类。
图2 类的设计
图3 onTouchEvent( )方法详细设计
(1)Paint 类
代表画笔,用来描述图形的颜色和风格,如线宽、颜色、透明度和填充效果等信息。使用Paint 类时,首先需要创建该类对象,可以通过该类提供的构造方法来实现。通常情况下,创建该类对象后,可以通过该对象提供的方法对画笔的默认设置进行改变,如改变画笔的颜色、笔触宽度等[3]。
(2)Canvas 类
代表画布,通过该类提供的方法,可以绘制各种图形(如矩形、圆形和线条等)。通常情况下,要在Android中绘图,首先需要创建一个继承自View类的视图,并且在该类中重写onDraw(Canvas canvas)方法,然后在显示绘图的Activity中添加该视图。
(3)BitmapFactory 类
代表位图,是Android 系统中图像处理的一个重要类。该类不仅可以获得图像文件信息,进行图像剪切、旋转、缩放等操作,还可以指定保存图像文件的格式。
(4)Path 类
代表路径,该类中包含一组矢量绘图,如画圆、矩形、弧、线条等。其中drawPath()方法,可以将定义好的路径绘制在画布上[4]。
3.2 黑板界面的实现
黑板的界面设计主要包括黑板版面和功能菜单的实现。黑板版面的实现是在mail.xml 文件中添加帧布局管理器,然后加载DrawView 类;功能菜单的实现是在默认创建的DrawActivity中,为实例添加选项菜单。菜单资源toolsmenu.xml 在XML中定义后,可以通过MenuInflator Service的inflate 方法把菜单填充(inflate)到应用程序中,然后重写onOptionsItemSelected()方法,再分别对各个菜单项选择做相应的处理。创建选项菜单方法onCreateOptionsMenu(Menu menu)如下。
3.3 功能模块的实现
创建一个名称为DrawView的类,该类继承自android.view.View 类。在DrawView 类中,首先定义程序中所需的属性,然后添加构造方法,并重写onDraw(Canvas canvas)方法用于设置背景颜色、绘制cacheBitmap、绘制路径以及保存当前绘制状态到栈中,最后调用restore 方法恢复所保存的状态。在DrawView 类的构造方法中,首先获取屏幕的宽度和高度,并创建一个与该View 类大小相同的缓冲区,然后创建一个新的画面,并实例化一个路径,再将内存中的位图绘制到cacheCanvas中,最后实例化一个画笔,并设置画笔的相关属性。
在DrawView 类中,重写onTouchEvent()方法,为该视图添加触摸屏事件监听器,在该方法中,首先获取触摸事件发生的位置,然后应用switch 语句对事件的不同状态添加响应代码,最后调用invalidate()方法更新视图。onTouchEvent()方法的实现如下。
橡皮擦的功能是通过clear()方法实现。在该方法中,setXfermode(Xfermode xfermode)方法用于设置图形重叠时的处理方式,如合并、交集和并集等。
保存当前版面的是save()方法,在该方法中,调用saveBitmap()方法将当前绘图保存为PNG 格式的图片。在saveBitmap()方法中,首先在SD 卡上创建一个文件,然后创建一个文件输出流对象,通过调用Bitmap 类的compress()方法将绘图内容压缩为PNG 格式并输出到文件输出流对象中,最后将缓冲区的数据全部写到输出流中,并关闭输出流对象。SaveBitmap()方法的实现如下。
4 测试
本系统的开发与调试采用Android SDK[5]自带的模拟器作为实验平台,开发平台的搭建在此不予详述。该平台生成的.apk 文件可以发布和安装到实体智能手机中运行,运行效果如图4所示。
图4 简易黑板界面
5 结束语
基于Android的简易黑板具有操作简便、功能明确的特点,为移动学习、办公提供了良好的人机界面交互环境。但该系统在工具栏的设计以及基于移动网络的界面同步等方面的功能还有待改进。
[1]郭绍青,黄建军,袁庆飞.国外移动学习应用发展综述[J].外国电教,2011,(5):105-109.
[2]方海光,王红云,黄荣怀.移动学习的系统环境路线图[J].现代教育技术,2011,(21):14-20.
[3]明日科技.Android 从入门到精通[M].北京: 清华大学出版社,2012.
[4]BILL P,BRIAN H.Android Programming[M].北京:人民邮电出版社,2014.
[5]Android NDK (April 2015)[EB/OL].http://developer.android.com/sdk/ndk/,2015.