李印 孙海滨 于金华
摘要:针对数据结构相对抽象的特点,结合实际情况,通过利用文字、图像、动画等形式描述数据结构的算法特点,在安卓手机平台上开发数据结构演示软件。整个演示软件使用下拉列表控制方式,每个列表项包括若干选项。每个列表项对应一个选择或一个子列表。系统一直处于选择菜列表或执行某一被选列表项状态,直到退出演示软件。该数据结构演示软件包含了线形表、堆栈、树、图等基本数据结构的概念以及实例分析的展示。
关键词:数据结构;演示软件;安卓手机平台;安卓布局;安卓控件
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)10-2248-05
Abstract: For relatively abstract data structure characteristics, combined with the actual situation , through the use of text, images , animation and other forms , describing the characteristics of the data structure algorithms , data structures presentation software is developed on Android mobile platform . The entire presentation software is composed by the drop-down list control, including a number of options for each list item. Each list item corresponds to a choice or a sub-list. Select the menu system has been in the execution of a selected list or list item until the exit presentation software. This data structure contains the concept of linear presentation software tables, stacks, trees, graphs and other basic data structures and show examples of the analysis.
Key words: Data Structure;Presentation software;Android mobile platform
数据结构课程是计算机软件的理论和技术的重要基础,不仅是计算机各专业的核心课程而且是其他理工科专业的主要选修课。算法演示属于软件可视化研究的一个分支,它将算法的运行过程及行为通过图形、动画、声音等方式进行展示,以辅助算法学习者理解[1]。当前,随着多媒体技术的发展,数据结构的演示软件大多是基于个人计算机环境下供学习者参考学习,即为计算机辅助教学[2]软件,这种方式虽然能够较好地动态、形象地将数据结构算法思想等展示给使用者,但有其不足之处。作为使用者必须有一台个人计算机才能安装使用,不能随身携带供随时参考。随着安卓智能手机的普及,基于安卓手机平台开发数据结构演示软件不仅能够摆脱个人计算机的环境限制,还可以随身携带,随时随地可供参阅,所以开发安卓手机数据结构演示软件还是非常有实用价值的。
1 安卓手机平台简介
1.1 Android布局管理
所谓Android布局就是组件在Activity中的呈现方式,即组件大小、间距和对齐方式等属性的具体表现。Android平台提供了以下,两种创建布局的方式:
在XML配置文件中声明:这种表现方式是将需要呈现在Activity中的各个组件在配置文件中进行定义声明,在Activity程序中通过setContentView(R.layout.main)方法实现将各组件呈现在Activity中,在Activity程序代码中通过findViewById方法获得组件实例。
在Activity具体实现程序中通过“纯代码”的形式直接实例化,将要用到的Android组件添加到所要呈现的Activity布局中。
总的来说,第一种布局创建方式更好,相对来说更加直观、简单。本软件开发过程均是用的第一种创建方式。要使用xml布局文件,大多数是通过使用Android编程提供的oncreate方法并使用setContentView来完成加载所要用到的xml布局文件。在编写代码过程中,findViewById方法要在setContentView方法加载后再调用,否则会出现加载错误,也就是说先加载后使用相关定义的组件。另外需要注意的是,所有定义的布局文件必须放在res/layout目录下才能被调用。
布局(ayout)是各个控件在屏幕上的位置关系,为了满足各种界面呈现方式的需要,Android提供五种布局方式:①FrameLayout(框架布局)又称为帧布局、②LinearLayout(线性布局)、③AbsoluteLayout(绝对布局)、④RelativeLayout(相对布局)、⑤TableLayout(表单布局)。在Android中布局通常有以下几种不同的情况:
①FrameLayout(框架布局):组件从屏幕的左上角坐标布局文件;
②LinearLayout(线性布局):按照垂直或者水平方向布局文件;
③AbsoluteLayout(绝对布局):按照绝对坐标来布局组件;
④RelativeLayout(相对布局):让子视图的位置参考其他视图位置;
⑤TableLayout(表单布局):按照行列方式布局组件[3]。
在Android中View类是一个最基本的UI类,它包括了Button(按钮)、List(列表)、TextView(文本框)、RadioButton(多选按钮)、Checkbox(选择框)等都属于View类。
注:在项目工程里面的每一个Activity类都必须在“项目工程名”/res目录下的AndroidManifest.xml文件添加类的名称,格式为:
2.2.6 查找
功能主要是各种查找算法的基本思想以及应用的背景介绍、相应实例的演示。
2.2.7 串
功能主要是相关概念的介绍、匹配模式定理、实例的演示。
2.3 系统整体特点
系统是在Windows XP环境下开发的,运用Eclipse软件和Android模拟器编程实现和测试可行。系统总体上采用层次菜单结构呈现,通过点击按钮或者触摸屏幕实现界面跳转进入到子菜单,逐层具体实现各个模块的设计。系统开始界面是目录形式,每一个标题为一列表名称,点击出现下拉列表,选择要查询的具体模块,进入后,进行查询。每一个模块大致实现了:该模块内容介绍、原理分析、实例展示等三个主要部分。
2.4 系统实现说明
2.4.1 主界面的设计实现
主界面利用Listview组件,列表显示需要三个元素:
① ListVeiw:用来展示列表的View。
②适配器:用来把数据映射到ListView上的中介。
③数据:具体的将被映射的字符串,图片,或者基本组件。
2.4.2 Button组件的应用
1)使用Button控件
Android SDK包含两个在你的布局中可以使用的简单按钮控件:Button(android.widget.Button)和ImageButton(android.widget.ImageButton)。这些控件的功能很相似因此我们几乎可以一并地的讨论它们。这两个控件不相同的地方基本上就是外观上;Button控件有一个文本标签,而ImageButton使用一个可绘制的图像资源来代替。Button使用的一个很好的例子应该是一个简单的带有“保存”文本标签的按钮。ImageButton使用的一个很好的例子可能是音乐播放器按钮的集合,包括播放P, 暂停 以及停止。本次实现用前一种Button控件,这里是一个示例屏幕(图五),包括两个Button控件(上一步和下一步)。
2)向布局添加Button控件
Button控件通常都被作为活动的布局资源文件一部分。比如,要添加一个Button控件到与你程序相关的main.xml布局资源中,你必须编辑布局文件。你可使用Eclipse的布局资源设计器,或者直接编辑XML。像按钮这样的控件也可以通过程序动态地创建并在运行时添加到你的屏幕上。简单地通过它的类来创建合适的控件并将它添加到你的活动中的布局。要添加一个Button控件到布局资源文件,打开/res/layout/main.xml布局文件,它是你的Android项目的一部分。点击你想要为其添加Button控件的LinearLayout (或者父级布局控件,比如RelativeLayout或FrameLayout)。在Eclipse中,你可以点击Outline标签中的父级布局,然后使用绿色加号按钮添加一个新的控件。选择你要添加的控件——在这个例子中是Button控件。
3)处理点击
实现点击事件处理的方法是使用setOnClickListener()方法向你的按钮控件注册一个新的View.OnClickListener。要使用这个方法,你必须更新你的活动类以注册控件点击事件。通常情况下通过你的活动的onCreate()方法来实现。使用findViewById()方法找到控件然后使用它的setOnClickListener()方法来定义当它被点击时的行为。你将需要自己去实现界面的onClick()方法。
2.4.3 TextView显示文本控件
1)TextView常用属性
setText()设置文本内容,同xml中的android:text
setTextSize()设置文本字体大小,同xml中的android:textSize
setTextColor()设置文本颜色,同xml中的android:textColor
setBackgroundColor()设置背景颜色,同xml中的android:background
2)单击TextView实现活动跳转
①从相应的布局管理资源获得相应TextView组件的Id;
②在需要跳转的活动里面写点击事件,主要用到了TextView的字符串setSpan()函数和setText(spannableString)以及setMovementMethod()函数;
③在需要跳转的活动里面声明需要触发的Intent意图即跳转活动到目的活动,具体实例可参考图四到图五的实现效果。
2.5 总体框架的实现效果
2.5.1 菜单列表
考虑到Android手机的实际应用背景,主界面采用菜单列表式的方式呈现。主界面的部分截图如图3所示。
2.5.2 下拉列表项
每个菜单列表名称是一个下拉列表项,当点击该名称时会出现相应列表项里面的内容。以第七章图为例,点击后列表展开如图4所示。
2.5.3 界面切换
触摸每一个列表项里的选择项,会跳转到相应的活动界面。以点击第一图的深度优先遍历为例,会出现图5所示界面。
单击上一步或下一步,会出现相应以邻接表存储图的遍历步骤演示,点击上面的“点击查看核心思想”会出现相应演示模块的原理或者概念性文字说明。
3 结论
本文的演示软件针对数据结构主要的算法给与了简要说明与实例演示,内容还不够具体、详细,每一部分具体的实现过程有待于细致推敲、修改完善,特别是对算法核心代码的解析说明功能,做到尽可能的满足用户的需要。如何将抽象的数据结构算法思想形象生动的在Android平台展示,来帮助需求者的学习是一个值得研究的问题,希望本文的引入,给数据结构算法演示软件的多媒体实现带来一些新的思路。
参考文献:
[1] 张文升,周青云,周晓聪.算法演示系统研究与应用[J].计算机应用与软件,2008.
[2] 吴伟民.数据结构和算法的可视化教学研究与实践[J].现代计算机,1999.
[3] 郭宏志.Android应用开发详解[M].北京:电子工业出版社,2010.
[4] Shane C,Lauren D.Android移动应用开发从入门到精通[M].张魏,李卉,译.北京:人民邮电出版社,2010.
[5] 李刚.疯狂Android讲义[M].北京:电子工业出版社,2011.
[6] 李毅波.数据结构与算法学习系统的设计与实现[D].长沙:中南大学,2012.
[7] 李红岩,葛志勇,邢俊.数据结构多媒体演示系统设计[J].科技视窗,2013(25).
[8] 严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,2002.