1、本科毕业设计(20届)基于ANDROID系统的文字阅读器的设计与实现所在学院专业班级计算机科学与技术学生姓名学号指导教师职称完成日期年月I摘要【摘要】GOOGLE公司于2007年公布开源系统ANDROID系统,在业界产生了不小的轰动。近几年,由于ANDROID系统的开源性和GOOGLE公司持续而快速的版本更新,导致了ANDROID系统在智能手机市场份额突飞猛进,市场前景广阔。本文阐述了一个在ANDROID系统下的文字阅读器的设计和实现。软件的编写环境是在ECLIPSE362中,使用GOOGLE发布的SDK插件进行编程。软件将实现文件的读取,书签的设定、查看和删除,旋转屏幕以及背景的设定等功能。
2、软件将从可行性分析、需求分析、总体设计、详细设计及软件实现等步骤进行分析与阐述。【关键词】ANDROID;文字阅读器;ECLIPSE。IIABSTRACT【ABSTRACT】GOOGLECOMPANYANNOUNCEDANDROIDOPENSOURCESYSTEMIN2007,THEINDUSTRYGENERATEDQUITEASTIRINRECENTYEARS,THEANDROIDSYSTEM,OPENSOURCEANDGOOGLECOMPANYSCONTINUEDANDFASTVERSIONOFTHEUPDATE,RESULTINGINTHEANDROIDSYSTEMINTHESMARTP
3、HONEMARKETSHAREBYLEAPSANDBOUNDS,THEMARKETPROSPECTISBROADTHISPAPERDESCRIBESATEXTINTHEANDROIDSYSTEMDESIGNANDIMPLEMENTATIONOFREADERSSOFTWAREAUTHORINGENVIRONMENTISECLIPSE362,USEGOOGLESSDKPLUGINPROGRAMMINGSOFTWAREWILLENABLETHEFILETOREAD,SETBOOKMARKS,VIEWANDDELETE,ROTATETHESCREENANDBACKGROUNDSETTINGSANDOT
4、HERFUNCTIONSSOFTWAREFROMTHEFEASIBILITYANALYSIS,REQUIREMENTSANALYSIS,DESIGN,DETAILEDDESIGNANDSOFTWAREANALYSISANDOTHERSTEPSDESCRIBED【KEYWORDS】ANDROID;TEXTREADER;ECLIPSE。III目录1项目可行性分析111项目背景1111ANDROID系统1112阅读的进化1113ANDROID平台下的软件商店112项目目标113项目功能1131文件浏览器1132文本书签2133旋转屏幕2134自定义模块214预期效果215论文整体架构32系统需求分析
5、421系统需求来源422需求分析4221用户分析4222软件需求分析4223软件总框架5224软件数据分析5225软件流程图723软件开发工具简介8231ECLIPSE36概述8232ANDROIDSDK2283项目总体设计1031总体设计10311关系模型10312关系模型数据1032软件结构设计11321总体结构设计11322系统结构设计114项目具体设计1341总述1342软件模块展示13421主界面模块13422文本阅读模块14423菜单界面模块15424书签管理模块16425用户设置模块175软件实现代码分析2051总述20IV52文件管理模块20521存储单条列表信息的类20522
6、创建文档管理视图20523文档选择2153主要阅览界面22531文档打开22532文档阅读百分比22533键盘映射2254主菜单模块2355书签管理模块23551新建书签23552查看书签24553删除书签2556个性设置模块26561字体大小设置27562颜色设置2857数据容器模块2858测试与运行296总结30参考文献31致谢错误未定义书签。11项目可行性分析11项目背景本节介绍该项目的设计所处在的背景,论证项目在当前环境下实现的实际意义。111ANDROID系统鉴于“获取信息的方式多种多样,不必非得坐在台式机前面”的公司信条,GOOGLE公司于2007年公布了他们所开发的开源智能手机系
7、统(现已衍生到平板电脑操作系统)“机器人”ANDROID。该系统最大的特性就是开源,通过开放源代码和提供丰富的接口,可以为广大的软件开发商提供广阔的舞台,全球所有的开发者和用户一起为这个系统的完善和进步做努力。所以从推出至今市场份额急速攀升,现已成为全球第二大手机操作系统。112阅读的进化现代社会速度越来越快,科技飞速发展,传统的纸质阅读已经难以吸引大家脱离快节奏的生活,静心阅读,厚重的纸质载体也是阻碍传统纸质阅读的一座大山。但于此同时,阅读的方式在我们的生活中也在悄然改变,阅读的革命正在我们身边发生蔡伦造纸,解决了厚重的竹简难以携带、保存,单位信息量小的劣势;而现今信息大爆发,纸张也越来越不
8、能承担传递大信息量的任务,科技发展,现如今我们可以通过电脑,通过手机,通过丰富的电子终端设备进行阅读,进行信息的获取,于此,该项目为ANDROID平台下的用户提供一个方便阅读工具。113ANDROID平台下的软件商店GOOGLE公司吸取APPLE公司在线商店APPSTORE的成功经验,在ANDROID平台上夜开发了APPSTORE,用以规范软件市场,提升开发者的收入水平,受到了广大用户和软件开发者的好评用户不用再到处寻找需要的软件应用或者游戏应用,而开发者被盗版和免费下载的所产生的损失比例也大幅降低。所以在线商店为开发者所乐道。12项目目标本项目整体定性为一个文字阅读器软件,通过快捷经小巧的架
9、构来吸引用户,为用户提供快速便捷的阅读体验。通过内部构建,为简单的文件类型提供解码方案,提供给用户阅读。同时利用数据库等组件为用户提供良好的阅读体验。13项目功能本节介绍该项目实现的具体功能,并论断其工作方式。131文件浏览器2由于ANDROID系统的开源性,决定了它在提供更大的创意的舞台的同时,也同时省略了很多原本应该程式化的部分,并不会提供一个默认的直观的文件管理和浏览的功能,所以用户不能直接通过熟悉的资源管理器的方式对手机内存中和SD存储卡中的文件资源进行浏览和管理的操作。鉴于以上原因,阅读软件需要为用户构建和提供一个便利的文件管理的模块来获取和浏览手机内存中和SD存储卡的文件资源。13
10、2文本书签在信息量越来越多的今天,我们几乎不可能一次就阅读完整篇文档,在一次阅读结束后,为了减少下一次阅读开始时的查找时间,同时用户可以在重要位置标记书签,可以便于用户记录、再次查找,提升用户体验,阅读软件需要提供书签,对用户的阅读历史进行保存,并且在用户再次访问书签时直观地向用户展示,方便用户查找和点击。同时软件还要提供给用户管理和删除书签的功能,防止用户在大量使用书签之后产生无法快速查找书签的影响,使书签失去它原有的快捷性。133旋转屏幕现在智能手机正在朝着触摸式屏幕、简化键盘的方向前进,屏幕越做越大,同时屏幕所承载的功能、显示的方式也越来越多。很多厂商已经不满足于传统竖屏状态下的屏幕,通
11、过旋转屏幕,可以展示更丰富的应用,也更贴近人们横宽竖窄的日常习惯。所以在设计过程中,我们也需要贴近趋势,迎合部分用户对于横向阅读的习惯,设计旋转屏幕按钮,提升用户满意度。134自定义模块现在社会,不论什么都讲究的是个性化,每个人都有自己的喜好,每个人都有自己的偏向,大家都希望自己所拥有的事物是独一无二的、是贴合自己需求的。同时在不同的环境下、不同的用户群体中必定需要不同的设置,才能达到贴合用户需求的目的。在本软件设计中,将自定义模块分为字体大小和颜色设置两个部分减小字体大小可以在同一页面阅读更多的内容,增大字体大小可以使得文字更容易辨别;通过调整背景和文字颜色可以快速适应不同阅读环境中光线差别
12、,减少不适合的屏幕颜色对眼睛的刺激,同时在整个环境适合的情况下,可以通过选择喜欢的色彩彰显自我个性的作用。通过以上两项设置,可以为用户设置最符合自身和现有环境的个性化设置。14预期效果用户启动软件后,首先可以在通过文件浏览器来浏览手机目录,查找和打开所需要的文档进行阅读,文件浏览器只会显示目录菜单和能够支持的文档;其次在阅读界面,用户可以滑动屏幕3进行文本阅读,可以点击“MENU”按钮显示菜单;通过菜单的书签选项,可以打开书签目录,进行书签的新建、查看、打开和删除地动作;通过设置选项,可以打开设置菜单,进行文字字体大小和背景、文字颜色设置的动作;通过旋转屏幕按钮,完成从竖屏阅读到横屏阅读的转变
13、;通过关闭按钮,关闭现文档,返回文件浏览器,选择新文档进行阅读。15论文整体架构本文第一章简要介绍了项目设计背景目标预期效果及系统的总体框架。第二章从系统需求角度进行分析,包括问题的提出,指出完整的文件解码能力是阅读器软件实现的基石。并对系统使用的对象系统需求系统数据进行分析,为系统的建立做充分的准备。第三章为总体设计,给出系统的总体架构图,及子系统的功能图,概括地说明了系统该如何实现。第四章详细设计部分精确地描述了目标系统每个模块的功能。第五章讲述了系统的实现,包括动态数据分析,编码和测试。第六章针对本系统的设计与实现进行总结,指出不足。42系统需求分析21系统需求来源现阶段人们的生活节奏越
14、来越快,大家需要更快捷,更主流的阅读方案,现在流行的文本格式有多种不同的文档编码方案,从最基本的TXT文档类型到由国内的厂商提出的UMD文档类型。这些不同的文档格式有不同的编码方法,但是在手机平台上,以基本的TXT文档最为通行,它方便,更易浏览和修改,适中的文档大小和广阔的获取渠道也是其优点。一方面,在中国,相对于经营多年,来自NOKIA公司的SYMBIANS60系统,GOOGLE公司的ANDROID系统显得如此的年轻和不足,缺少大量用户实践,缺少广大的应用软件的开发商介入来发相关的程序应用,但从用户的角度而言,依然希望能有一个小巧的文本阅读器的出现,来弥补这方面的空白。另外一方面,由于国内手
15、机通讯环境、网络带宽、使用习惯、流量资费、版权管理等与其他国家不同的外部条件和国内现状,我们可以看到,在中国,主流的阅读环境还是离线的阅读方式,利用手机进行阅读的用户们也更加习惯于离线方式的阅读解决方案,即用户事先将文档下载至本地,然后通过本地文档阅读器进行阅读的解决方案。基于以上三条因素,一个能够通过离线方式提供TXT文档阅读的阅读软件应用就成为了契合用户需求的方案。22需求分析本文本阅读器的开发目标是为ANDROID手机用户(尤其是中文用户)提供一个主流TXT文档格式阅读的解决方案。本软件应用提供图形化的文件浏览器来查找文档,提供多彩的阅读界面,并提供书签给用户来提供使用上的便利。221用
16、户分析本系统的设计用户为使用ANDROID系统平台的手机,同时对文档阅读(尤其是网络小说)有需求的广大青少年用户群体;希望打发上下班时间而进行阅读,希望软件迷你简单,不需要占用大量空间的白领。222软件需求分析从之上所分析定位的软件用户群的习惯了解,用户所关心的是,软件能否提供功能使其便捷地浏览文档,便利地进行操作,存在友好的界面。在系统的具体设计实现上,要求软件不只是简单的开启和显示文本内容,而要面向用户群体,针对每功能的特点进行设计,提供适合用户的,5解决用户需求的模块,具体需求见表21。表21用户基本需求需求功能管理文档查看可以显示TXT文本内容文件查找可以便捷的查找到存储卡中的文件信息
17、书签设定可以记录书签,方便下次阅读环境设定通过设置阅读环境,达到个性化需求223软件总框架该系统的总体框架由数据库用户操作平台二个部分构成。数据库存储基本数据信息,书签信息等。用户操作平台的总体框架由文件管理、数据处理、用户界面三部分组成。框架图如图21所示。图21系统总体框架图224软件数据分析本节介绍在软件中所需要的数据的分类。用以明确制作方向。1文件信息实体文件信息实体是用来浏览和查找的文件内容信息,包括文件名和文件路径两部分。如图22所示。文件管理用户界面数据处理6图22文件信息实体关系(ER)图2书签信息实体书签信息实体使用来记录用户文档设置书签的列表,其中包括文件名、文件路径、书签
18、编号、书签备注名称,如图23所示。图23书签信息实体关系(ER)图3用户设置实体用户设置信息实体是用来呈现用户设置的参数的合集,其中内容包括文本字体大小、文本字体颜文件名称文件路径文件信息书签信息文件名称书签位置文件路径书签备注名称书签编号7色、背景颜色,如图24所示。图24用户设置信息实体关系(ER)图225软件流程图对系统各模块的功能分析后,可以根据系统使用对象的不同,导出用户操作流程图。用以明确编程思路,引导用户使用。具体软件流程图如图25所示。图25软件流程图文档管理模块用主界面模块书签管理模块设置管理模块用户设置屏幕背景颜色文本字体颜色文本字体大小823软件开发工具简介本系统采用开发
19、平台为ECLIPSE36,使用ANDROID22版本的ANDROIDSDK,下面对它们进行简要的介绍。231ECLIPSE36概述ECLIPSE是著名的跨平台自由集成开发环境(IDE)。它最初主要用来制作基于JAVA语言开发环境下的软件。但是随着使用人群的不断扩大,现如今却不再局限于JAVA语言之下,目前也有人通过插件使其作为其他计算机语言(比如C和PYTHON)的开发工具平台。ECLIPSE的本身只是一个框架平台,但是通过众多插件的支持,使得ECLIPSE拥有其他功能相对固定的集成开发环境很难具有的灵活性和扩展性。许多软件开发商以ECLIPSE为框架开发自己的IDE,更显示了ECLIPSE开
20、发环境的使用广泛。虽然大多数软件开发者还是将ECLIPSE当作JAVAIDE来使用,但ECLIPSE所能开发的目标不仅限于JAVA平台下。ECLIPSE还包括插件开发环境(PLUGINDEVELOPMENTENVIRONMENT,PDE),这个组件主要针对希望扩展ECLIPSE的软件开发人员,因为它允许他们构建与ECLIPSE环境无缝集成的其他语言环境的开发工具。同时由于ECLIPSE是由框架平台和众多插件所组成的,她包括的每样东西属于插件,对于给ECLIPSE提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等地位的发挥场所。232ANDROIDSDK22ANDR
21、OIDSDK是由GOOGLE公司发布的ANDROID软件开发工具包,目前已有从10开始到30等多个版本供开发者选择。本软件开发使用的SDK为现阶段使用最多的版本号为22的开发工具包。ANDROID的系统架构分为应用层、应用框架层、系统运行层和内核层四个部分。应用层就是用JAVA语言编写的运行在虚拟机上的程序,也就是直观能看到的部分。应用框架层是编写GOOGLE发布的核心应用时所使用的API框架,开发人员可以使用这些框架来开发自己的应用,这样便简化了程序开发的架构设计,但是必须遵守器框架的开发原则。当使用ANDROID应用框架时,ANDROID系统会通过一些C/C类库来支持我们使用的各个组件,使
22、其能更好的为我们服务。主要包括系统C库、多媒体库、SSL、OPENGLES10、SQLITE、WEBKIT等。在系统运行层中,每一个程序都运行在DALVIK虚拟机之上,它是一个专门为移动终端开发虚拟机,基于寄存器,在代码的执行效率上更胜基于堆栈的虚拟机。9ANDROID的核心系统服务基于LINUX26内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型都依赖于该内核。103项目总体设计31总体设计关系数据库逻辑设计的结果是一组关系模式的定义。通过之前两个部分的需求分析以及管理用户操作的流程图,可以将本系统总结为下面的关系模式以及该模式的具体数据结构,用以引导编写程序。311关系模型软件涉及
23、到的关系模型有书签信息(书签编号、书签备注信息,文件名称、文件路径)设置信息(字体大小,文字颜色,背景颜色)312关系模型数据上述数据的具体内容需要列表解释,明确数据具体内容。表31书签信息的数据表格数据名数据类型可否为空是否需要手动输入备注书签编号INTNONO由系统产生为书签排序用书签备注信息STRINGNOYES用户输入的书签名称文件名称STRINGNONO文件名称文件路径STRINGNONO文件所在地址表32设置信息的数据表格数据名数据类型可否为空是否需要手动输入备注字体大小INTNONO设计信息均为通过选择已经预置好的配置,传递信息用整型代码,不需要手动输入。文字颜色INTNONO背
24、景颜色INTNONO1132软件结构设计为了实现目标软件,必须设计出组成这个软件的所有模块和数据库,明确它们的功用。首先应进行结构设计,即确定软件由哪些模块组成,以及这些模块之间的关系,这是总体设计阶段的任务。我们可以用层次图来描绘软件的层次结构(即由模块组成的层次系统)。所谓层次图即是自顶向下,逐步细化。顶层模块调用他的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能,通过将软件模块化来确定编写代码的分类。具体方案见图31,其中图中每个矩形框为一个模块,方框之间的连线表示调用关系。321总体结构设计本软件的设计思想是采用AN
25、DROID软件结构相互组合,利用ANDROIDSDK提供的UI和控件功能建立面向用户的界面程序,利用数组来建立简单的数据库体系,进行数据操作。本软件具有数据库操作、主界面、文件管理器、书签管理、TXT文件阅读、菜单界面功能模块组成,完成一般文本阅读器应该完成的任务。软件总的功能结构层次图如图31所示。322系统结构设计以下将从用户的角度对各子系统功能进行分析1主界面模块列表显示存储卡的文件列表,用户可以直接点击打开文件,进行阅读。2文件管理器模块用户浏览存储卡中的文件列表,选择需要阅读的书籍。3主菜单模块用户通过进入主菜单可以进行书签和用户设置等工作。4书签管理模块用户可以新建书签,查看书签。
26、删除书签,完成书签的相关动作。5TXT文本阅读模块用户可以通过该模块浏览TXT文本内容。6用户设置模块用户可以设置字体颜色、字体大小和背景颜色,达到个性化的目的。具体模块架构层次图如下图31所示。以上即是本软件总的功能结构图以及各个子系统的详细功能结构说明。对于每一个新软件,大家总是一开始就拼命码代码,却忽略了往往是非常重要的开始时的结构分析。做好总的结构设计,对于后来的模块化编制程序提供了方向指导性,而不会产生因为结构不清楚所产生的种种问题。12图31系统总体结构层次图文本阅读器文件管理器目标文件打开系统目录浏览文档阅读菜单界面书签管理字体大小设置用户设置背景颜色设置文字颜色设置关闭文档新建
27、书签查看书签删除书签打开书签134项目具体设计41总述经过可行性分析,需求分析和总体设计之后,我们已经系统规划了解了所有模块,可以进入软件的具体设计阶段。在具体设计阶段,需要将对目标软件进行精确的描述,采用结构程序设计技术为最后的系统代码实现设计出程序“蓝图”。本软件上分为数据库和应用程序组件两部分,数据库在总体设计中已经基本建成,应用程序组件部分则采用ECLIPSE作为软件的开发工具,以友好界面形式面向软件用户,遵循方便,易用的特点。下面部分将重点描述系统各模块的具体设计成品图。42软件模块展示421主界面模块此模块是用户进入系统的门户,主要功能是显示文件管理器,让用户进行选择。图见图41,
28、图42。图41文件管理器一14图42文本管理器二422文本阅读模块本模块是用于显示用户选择的TXT文本内容,用户可以通过菜单功能来选择文本的不同编码,来正确显示文本内容。TXT文本阅读模块如图43所示。图43问被阅读界面15423菜单界面模块本界面模块通过构建主界面模块,来也引导用户进入菜单,进行相关的设置,书签的存取,文档的关闭等内容。模块如图44所示。图44主界面模块图45文档简介部分16424书签管理模块书签管理模块的入口在菜单界面模块中,用户进入之后可以对书签进行新建、打开、删除等功能。模块如图46,图47,图48,图49所示。图46书签管理模块图47书签查看界面17图48删除书签界面
29、图49新建书签界面425用户设置模块通过主界面入口进入的还有用户设置模块,在此可以通过预设更改阅读的主题风格,达到适应环境和体现喜好的目的。具体界面见图410,图411,图412。18图410个性化设置模块主界面图411个性化设置模块字体大小设置界面19图412个性化设置环境颜色设置界面205软件实现代码分析51总述软件全部代码分为以下几个部分1文件管理器模块用户浏览存储卡中的文件列表,选择需要阅读的书籍2主界面模块用户直接进行阅读文件。3主菜单模块用户通过进入主菜单可以进行书签和用户设置等工作。4书签管理模块用户可以新建书签,查看书签。删除书签,完成书签的相关动作。5TXT文本阅读模块用户可
30、以通过该模块浏览TXT文本内容。6用户设置模块用户可以设置字体颜色、字体大小和背景颜色,达到个性化的目的。7数据库处理模块具体设置软件中各类数据的增减等操作。在之后的章节将详细阐述具体模块代码作用。52文件管理模块在这里,我们通过在程序内定义布局文件的方式来定义UI界面。同时新建了FILEMESS类来存储需要显示的每一行数据的内容,包括从DRAWABLE文件夹中调用图表信息,用FILE类型存储的文件路径和用STRING类型存储的文件名称,代码如下所示。521存储单条列表信息的类提供一个类用以打包,方便演示列表/FILEMESSJAVAPACKAGECOMREADERIMPORTJAVAIOFI
31、LEPUBLICCLASSFILEMESSPUBLICINTICONPUBLICFILEFILEPUBLICSTRINGNAME522创建文档管理视图/TXTLISTJAVAFILEROOTPARTHNEWFILE“/“GETFILESROOTPARTHPUBLICVOIDGETFILESFILEFILEPATH21IFTXTLISTISEMPTYTXTLISTCLEARIFLISTSTRISEMPTYLISTSTRCLEAR/在顶部创建返回上级菜单选项IFFILEPATHGETPARENTFILENULLFILEMESSHNEWFILEMESSHFILEFILEPATHGETPARENTFI
32、LEHNAME“COMEBACK“HICONRDRAWABLEARROWUPTXTLISTADDH/为每个类表目录提供返回上层功能FILEFILESFILEPATHLISTFILESIFFILESNULLINTIFORI0I0PSCGETSCROLLY100/SCGETCHILDAT0GETMEASUREDHEIGHTSCGETHEIGHTTXTVIEWTHISSETSECONDARYPROGRESSP100/根据现有长度和全文长度计算进度条533键盘映射PUBLICBOOLEANONKEYUPINTKEYCODE,KEYEVENTEVENTIFKEYEVENTKEYCODE_DPAD_DOW
33、NKEYCODEMPROGRESSIFKEYEVENTKEYCODE_DPAD_UPKEYCODE23MPROGRESS/上下键换段同时计算进度条IFKEYEVENTKEYCODE_DPAD_LEFTKEYCODESCSCROLLTO0,SCGETSCROLLYSCGETHEIGHT15MPROGRESSIFKEYEVENTKEYCODE_DPAD_RIGHTKEYCODESCSCROLLTO0,SCGETSCROLLYSCGETHEIGHT15MPROGRESS/左右键设置换页,同时计算百分比进度条RETURNSUPERONKEYDOWNKEYCODE,EVENT54主菜单模块这个模块主要是
34、通过菜单按钮,显示菜单,方便用户选择书签等服务,本身没有具体功能。PUBLICBOOLEANONCREATEOPTIONSMENUMENUMENUSUPERONCREATEOPTIONSMENUMENUMENUADD0,SETTING,MENUNONE,“个性设置“/定义显示主菜单模块SETICONRDRAWABLESETTINGS/其中略SUPERONCREATEOPTIONSMENUMENURETURNTRUE/记录菜单中的按钮按下的状态PUBLICBOOLEANONOPTIONSITEMSELECTEDMENUITEMITEMSWITCHITEMGETITEMIDCASESETTINGM
35、YSETTINGS/将菜单模块和相关程序绑定BREAK/其中略DEFAULTRETURNFALSERETURNTRUE/将按钮被按下的反馈与要运行的模块对应55书签管理模块该模块是通过链接数据库,完成书签工作,新建,查看,删除三个动作分别对应三个ACTIVITY。551新建书签构建菜单后主要通过嗲用数据库ACTIVITY的ADD接口来增加书签。PRIVATEVOIDNEWDIALOGALERTDIALOGBUILDERBUILDERNEWALERTDIALOGBUILDERTHISBUILDERSETTITLE“新建书签“24BUILDERSETICONANDROIDRDRAWABLEIC_D
36、IALOG_ALERTFINALEDITTEXTINPUTNEWEDITTEXTTHISINPUTSETHINT“请输入书签名“BUILDERSETVIEWINPUTBUILDERSETPOSITIVEBUTTON“确定“,NEWONCLICKLISTENEROVERRIDE/以上是构建菜单PUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICH/调用数据库接口写入书签IFINPUTGETTEXTTOSTRINGTRIMLENGTH0ADDTAGINPUTGETTEXTTOSTRINGDIALOGDISMISSTOASTMAKETEXTTXTVIEWTHI
37、S,“新建书签成功“,TOASTLENGTH_SHORTSHOWELSETOASTMAKETEXTTXTVIEWTHIS,“请您输入书签名“,TOASTLENGTH_SHORTSHOWNEWDIALOG/测试书签名是否为空,防止漏洞BUILDERSETNEGATIVEBUTTON“取消“,NEWONCLICKLISTENEROVERRIDEPUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICHDIALOGDISMISSBUILDERSHOW552查看书签通过数据库的SIZE数据查看现有书签条数,通过LIST相关方法罗列条目。PRIVATEVOIDOPEN
38、DIALOGALERTDIALOGBUILDERBUILDERNEWALERTDIALOGBUILDERTHISBUILDERSETTITLE“所有书签“FINALLISTLISTDATAREADERDATABASEGETREADERDATABASETHISIFLISTDATASIZE0/如果在数据库中书签的条数大于零LISTVIEWLISTNEWLISTVIEWTHISFINALMTAGADAPTERMYADAPTERNEWMTAGADAPTERTHIS,LISTDATALISTSETADAPTERMYADAPTER25LISTSETONITEMCLICKLISTENERNEWONITEMC
39、LICKLISTENEROVERRIDEPUBLICVOIDONITEMCLICKADAPTERVIEWARG0,VIEWARG1,INTPOS,LONGARG3MSCROLLTOLISTDATAGETPOS/则按条输出LISTSETONITEMLONGCLICKLISTENERNEWONITEMLONGCLICKLISTENERBUILDERSETVIEWLISTELSE/不然输出对话框,提示没有书签TEXTVIEWTXTNEWTEXTVIEWTHISTXTSETTEXT“没有书签“TXTSETPADDING10,5,0,5TXTSETTEXTSIZE16FBUILDERSETVIEWTXT
40、BUILDERSETNEGATIVEBUTTON“确定“,NEWONCLICKLISTENEROVERRIDEPUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICHDIALOGDISMISSBUILDERSHOW553删除书签用数据库的DELETE相关方法删除书签,并且在之前通过温馨提示防止误触。PRIVATEVOIDDELETEDIALOGALERTDIALOGBUILDERBUILDERNEWALERTDIALOGBUILDERTHISBUILDERSETTITLE“温馨提示“BUILDERSETMESSAGE“你确定要删除所有书签吗“BUILDER
41、SETICONANDROIDRDRAWABLEIC_DIALOG_ALERTBUILDERSETPOSITIVEBUTTON“确定“,NEWONCLICKLISTENEROVERRIDEPUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICHDELETEALLTAGDIALOGDISMISSTOASTMAKETEXTTXTVIEWTHIS,“删除成功“,TOASTLENGTH_SHORTSHOW26BUILDERSETNEGATIVEBUTTON“取消“,NEWONCLICKLISTENEROVERRIDEPUBLICVOIDONCLICKDIALOGIN
42、TERFACEDIALOG,INTWHICHDIALOGDISMISSBUILDERSHOW56个性设置模块这个模块通过读取预置信息,可以修改阅读环境,包括的两个ACTIVITY分别是字体大小设置和颜色设置。PRIVATEVOIDMYSETTINGSLAYOUTINFLATERMINFLATERLAYOUTINFLATERFROMTHISVIEWMVIEWVIEWMINFLATERINFLATERLAYOUTSETTINGS,NULLMVIEWSETCLICKABLEFALSESPINNERFONTSETSPINNERMVIEWFINDVIEWBYIDRIDSETFONTSPINNERTHEM
43、ESETSPINNERMVIEWFINDVIEWBYIDRIDSETTHEMEFONTSETSETADAPTERGETARRAYADAPTERGETDATA1FONTSETSETSELECTIONREADERSETTINGSGETFONTSIZETXTVIEWTHIS1FONTSETSETPROMPT“设置字体大小“THEMESETSETADAPTERGETARRAYADAPTERGETDATA2THEMESETSETSELECTIONREADERSETTINGSGETTHEMETXTVIEWTHIS1THEMESETSETPROMPT“设置主题“/构建菜单框架FONTSETSETONITEM
44、SELECTEDLISTENERNEWONITEMSELECTEDLISTENEROVERRIDEPUBLICVOIDONITEMSELECTEDADAPTERVIEWARG0,VIEWARG1,INTARG2,LONGARG3/通过传递预设参数来确定字体大小IFTEXTVIEWARG1GETTEXTGETDATA10READERSETTINGSSETFONTSIZETXTVIEWTHIS,1SETVIEWFONTSIZE1/以下略OVERRIDEPUBLICVOIDONNOTHINGSELECTEDADAPTERVIEWARG027THEMESETSETONITEMSELECTEDLISTE
45、NERNEWONITEMSELECTEDLISTENEROVERRIDEPUBLICVOIDONITEMSELECTEDADAPTERVIEWARG0,VIEWARG1,INTARG2,LONGARG3/通过预设背景图片和文字颜色进行更改IFTEXTVIEWARG1GETTEXTGETDATA20READERSETTINGSSETTHEMETXTVIEWTHIS,1SETVIEWTHEME1/以下略ALERTDIALOGBUILDERBUILDERNEWALERTDIALOGBUILDERTHISBUILDERSETTITLE“个性化设置“BUILDERSETVIEWMVIEWBUILDERS
46、ETICONRDRAWABLESETTINGSBUILDERSETINVERSEBACKGROUNDFORCEDTRUEBUILDERSETPOSITIVEBUTTON“关闭“,NEWONCLICKLISTENEROVERRIDEPUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICHDIALOGDISMISSBUILDERSHOW561字体大小设置字体大小预设了四个值,通过传递字体大小的数值来实现改变字体大小的目的。PRIVATEVOIDSETVIEWFONTSIZEINTMSIZEFONTSIZE14IFMSIZE1FONTSIZE12IFMSIZE2
47、FONTSIZE14IFMSIZE3FONTSIZE16IFMSIZE4FONTSIZE18TVSETTEXTSIZEFONTSIZEPUBLICSTATICVOIDSETFONTSIZECONTEXTMCONTEXT,INTMSIZESHAREDPREFERENCESSPMCONTEXTGETSHAREDPREFERENCES“READER_SETTINGS“,CONTEXTMODE_WORLD_WRITEABLE28EDITORSPEDSPEDITSPEDPUTINT“FONT_SIZE“,MSIZESPEDCOMMIT562颜色设置背景颜色和文字颜色通过预设背景图片和文字颜色进行更改。P
48、RIVATEVOIDSETVIEWTHEMEINTMTHEMEIFMTHEME1TVSETBACKGROUNDCOLORCOLORWHITETVSETTEXTCOLORCOLORBLACKIFMTHEME2TVSETBACKGROUNDCOLORCOLORBLACKTVSETTEXTCOLOR0XE3E3E3FFIFMTHEME3TVSETBACKGROUNDRESOURCERDRAWABLEBGTVSETTEXTCOLORCOLORWHITEPUBLICSTATICVOIDSETTHEMECONTEXTMCONTEXT,INTMTHEMESHAREDPREFERENCESSPMCONTEXT
49、GETSHAREDPREFERENCES“READER_SETTINGS“,CONTEXTMODE_WORLD_WRITEABLEEDITORSPEDSPEDITSPEDPUTINT“THEME_SET“,MTHEMESPEDCOMMIT57数据容器模块作为基础数据模块,基本上的模块都会调用该模块完成数据的存取,包括像是文档浏览器的显示,书签的存取和展示等动作。STATICLISTGETREADERDATABASECONTEXTMCONTEXTSQLITEDATABASEDBMCONTEXTOPENORCREATEDATABASEDB_NAME,CONTEXTMODE_PRIVATE,NULLCURSORCURDBQUERYTB_NAME,NEWSTRING“ID“,“TITLE“,“FILENAME“,“PO_INT“,NULL,NULL,NULL,NULL,NULLLISTLISTNEWARRAYLISTCURMOVETOFIRSTWHILECURISAFTERLASTREADERTAGSTAGNEWREADERT