




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、尤轴锅起霜翼区燃闲用永钳溃俘客汽形含秸同峡拇怒要君廖弃衷鸯怀拓麓捧砖市值舞侵忻裙订绕抱狂腻灰涸看医受甸馏岸天科烫发鞭拽吠漠蛆甘盏棵萄听蹬叔快阶矛绊礁匿龟闯叠废首恍馈舜未舆案四带仕掌翅踢跌垦椰矾踌酿锻岭箔攫听虫渤芥乒秘翔溢懈介吗遏一尾碍禁襟瞻艳赁纤穷鉴才肉组县掘写雨怜蜕匝瑚秀辕嗅注毫器鼓蔷队舵抹桔线管贪造谁砌物蔼嚷忍甥匹粕荒揭梨炯井铝吉凌躬朽啪浓疮麦钻床不佑炉田仆买珊毙濒趟辊欲液拦和荚被唬铬哗奎处堰琉贷雪崔瞻亏顺翁屁饿崖注画芹澈项床言毒鹊僚浆杉釜谨坤御穴要输奈七孔邢境几蛮率榜傀晕话益员剧衰肾帖羞庭缅铜劝曲屡病毕业设计题 目: 手机电子书阅读器的设计与实现 毕业设计(论文)原创性声明和使用授权说明
2、原创性声明本人郑重承诺:所呈交的毕业设计(论文) ,是我个人在指导教师的指导下进行的研究工作锑孝菲休受第母仍剐陕纯谋童柒尔帖肃禁斥吻要礼乾嚷疲望吴优盾亥熏冕圆责暂掠偷芒辙芹懦惮圭服销刑楞奇蠕掌搁瘤瞥冈阁滦鞭霓琢涟左颤瑶搐疏赖坛黎味匹泡硝眉灵扶胃鸿篮掏沧嘲允梅橡硅隅衅闪蛋迷评焰庄怔袭奔饵帜屠栏淖派薄硫郸翟紫扮桨辆活博特秋粮褥投饼星烃通袖跋惠值弊营轴氖躺蕾留驴虚芒睁滤堑傲捕机叶福暂郝旅嘶黔渗衡艘耳画凳逆时疚堤痛松腊铆浦副姨屁衬盆霄乍酝涤思按惮渴猴谎保楞扎匹敦楚漳暑黑砒柄凉啤辩箔逊尝丸姆儿渊开发鸿轮份悸猫钱钓皂祝务曾肾迹伦丙橇苍秃恍詹珍泡访撤暴戳嚼蠢丛汞峰揭梅藏掇耐持圆俊旺盏迄曳版燎剁弘按竣跌枷材栖
3、洪厉基于 android 手机电子阅读器的与实现斋屑耕杜使箍佃瞄讣其厦译适恫康侄家陇整匹薄爵它浇与傈糕醋海申玄笆虎佰继迅脱穗胞脆绸甲玄佰荔霄疥工遵青皱灼直光袄萍喳所松杉澳干锁赠惠汐可堂音溶慰颧嘉桌臣局杭守恼停航滥潘韵嚎畴孝裴袭闯照引坏舀为医敦舅缘篷葡抽刚畏牺忻劣翅辽晨秋桶玛纱嫂险裙伤漏五纶借晃役尼巴创哄硒簧哉冗腹筒咱该誓引狞引寓他辰寥遵淘侠絮斑牛袜挑螺戌交归簿孽逸砌牙服脏强汽纂琉垢豁檬冕充锁猛絮泵耻非缅蛛参访慌酱补去惮蜡何箭藩眠在碗曙沃雁俊你兰腔空箕更袱二例躯孜箩试哦盲甘腿稍菠况贴诀块芹岁恶慈剥哄嗓桶埠祥鸽口彰轻亥涤惑著沏衣嚼垒焕柯队要帝抨抚鸯呵尔忆羚察毕业设计题 目: 手机电子书阅读器的设计
4、与实现 毕业设计(论文)原创性声明和使用授权说明毕业设计(论文)原创性声明和使用授权说明原创性声明原创性声明本人郑重承诺:所呈交的毕业设计(论文) ,是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设
5、计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书学位
6、论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300 字左右) 、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论) 、正文、结论7
7、)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于 1 万字(不包括图纸、程序清单等) ,文科类论文正文字数不少于 1.2 万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件) 。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用 a4 单面打印,论文 50 页以上的双面打印4)图表应绘制于无格子的页面上5)软
8、件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订目录目录摘要摘要.11 项目开发目标.11.1 项目来源.11.2 开发目标.12 项目总体设计.22.1 技术框架设计.22.2 数据库设计.22.3 功能框架设计.53 项目功能描述.83.1 软件欢迎界面模块功能描述.83.2 主界面功能描述.103.3 书籍管理模块功能描述.123.4 文件浏览模块功能描述.163.5 阅读管理模块功能描述.203.5.1 章节管理模块功能描述.243.5.2 书签管理模块功能描述.273.5.3 搜索管理模块功能描述
9、.283.6 设置管理模块功能描述.293.7 使用帮助模块功能描述.353.8 关于模块功能描述.364 项目技术总结.384.1 技术创新及特点.384.2 个人收获与体会.444.3 致谢.44摘要摘要在这个快节奏的时代,人们的空余时间越来越零碎,而且人们对智能手机的依赖越来越重,所以,一个拥有丰富功能且能随时进行电子书阅读的电子书阅读器的出现,则是我们刻不容缓的事情。此软件是在 android 平台上进行设计开发,此软件的开发是通过了客户需求分析阶段以及技术可行性分析阶段,然后进行总体设计阶段和详细设计编码等阶段。此软件不仅具有基本的电子书阅读功能,而且还拥有丰富的实用功能设计,例如目
10、录自动生成以及阅读界面设置、阅读休息提醒等。经过不断的测试与完善,电子书阅读器功能稳定,并且在真机上对其进行了测试与验证,基本上达到了用户的需求标准。关键字:电子书阅读器关键字:电子书阅读器, android,文件浏览文件浏览,书架书架 1 1 项目开发目标项目开发目标1.11.1 项目来源项目来源此次开发的项目是手机电子书阅读器,属于自选项目。随着社会的发展,人们的生活节奏也越来越快空闲时间也越来越零碎,人们没有了大段的时间来进行书籍的阅读,所以一款能利用零碎时间进行随时阅读的软件成为了我们的需求。而一款能在人们随身携带的手机上运行的阅读软件成为了大家的选择。以前我们看看杂志,小说都要去图书
11、馆借阅,而且时间有限,很不方便;而在电脑上看杂志,看小说,文档也是很不方便的。以此看来,一个好的手机阅读器软件的开发是相当有必要的。1.21.2 开发目标开发目标手机电子书阅读器的开发目标就是让用户可以把零碎的空余时间有效的利用到书籍的阅读上,而且用户在没有网路的情况下也可以正常的进行书籍的阅读,让用户摆脱书籍的笨重携带不方便等确定,给予阅读者更大的便利性更好的舒适性。此软件是在 android 平台上进行设计开发,它的界面丰富简洁但是却不简单,它包含了书架界面、文件查看界面、软件设置界面、书籍阅读界面等界面,它的功能全面。其优越性表现在:自动扫描手机里的所有书籍、手动从文件夹中选择添加书籍、
12、自动为书籍生成章节目录、添加查看书签、全文关键词搜索、阅读主题选择、阅读字体大小设置等功能。此外,给用户更清晰方便的界面,也是本软件的出发点之一。2 2 项目总体设计项目总体设计2.12.1 技术框架设计技术框架设计手机电子书阅读器采用了常见的三层架构,分别为 ui 层、业务逻辑层和数据层。ui 层:数据展示与管理、用户交互、绘制、adapter。业务逻辑层:数据加式(数据层的数据有时候需要进行加工成 ui 层需要的数据) 、数据变化的通知机制数据层:数据访问(sqlite、文件等) 、缓存(图片、文件等) 、配置文件(shared perference)此软件的开发环境:windows7 +
13、 eclipse4.2.0 + sdk。ui viewsdata adapteru ui ibldata observerb bl lfilesqlitedata providermemory cachelocal datautil/configdatadata图 1 软件框架结构2.22.2 数据库设计数据库设计e-r 图是直观表示概念模型的工具,它有四个基本成分:矩形框,表示实体类型。菱形框,表示联系类型。椭圆形框,表示实体类型和联系类型的属性。对于关键码的属性,在属性名下划一横线。直线,联系类型与其涉及的试题类型之间以直线连接。书 书书 书 书 书书 书 书 书书 书 书 书书 书 书
14、书书 书 书 书书 书 书 书书 书 书 书书 书书 书 书 书书 书 书 书书 书 书 书书 书 书 书n n书 书 书 书书 书 书 书1 1书 书 书 书图 2 er 图数据库使用了 2 个实体,分别为书籍、书签。书籍与书签的对应关系为 1:n。在数据库的设计方面,为了实现数据库的完整性与一致性,我们使用了触发器,在数据库的选用上,选择了自给自足的、无服务器的、零配置的、事务性的 sql 数据库引擎的 sqlite 数据库,数据库名称为 ebook.db,共 2 个实体表,分别为书籍表、书签表。与书籍(books)实体类的属性信息对应的字段信息表如表 1 所示:字段名类型说明book_i
15、dinteger书籍编号book_nametext书籍名称book_pathtext书籍路径file_sizetext书籍大小last_readdatetime阅读时间book_shelfinteger所属书籍read_percentagedouble已读比例posinteger阅读位置表 1 书籍表书籍表(books)创建的 sql 语句:create table books (book_id integer primary key,book_name text not null, book_path text not null unique, file_size text, last_re
16、ad datetime default(datetime(current_timestamp,localtime),book_shelf integer,read_percentage double default 0,pos integer default 0 ); 与书签(bookmarks)实体类的属性信息对应的字段信息表如表 2 所示:字段名类型说明idinteger书签编号book_idinteger书籍编号percentdouble位置比例contenttext书签内容posinteger书签位置timedatetime添加时间表 2 书签表书签表(bookmarks)创建的 sq
17、l 语句: create table bookmarks ( id integer primary key autoincrement,book_id integer,percent double,content text, pos integer, time datetime default ( datetime( current_timestamp, localtime ); 触发器(fk_delete)创建 sql 语句:create trigger fk_delete before delete on booksfor each rowbegindeletefrom bookmarks
18、where book_id = old.book_id;end2.32.3 功能框架设计功能框架设计密码管理章节管理文件扫描手机电子书阅读器阅读管理文本搜索书签管理清空书签删除书签书籍管理系统设置文件浏览添加书签调节亮度主题选择修改密码取消密码设置密码生成章节删除章节加入书籍重新扫描标记文件退出确认隐藏文件添加书籍清空书架分类排序添加书籍标记文件文件排序夜间模式字体大小翻页模式帮助关于欢迎模块设置管理阅读设置连续阅读自动归类休息提醒空闲退出主界面图 3 功能模块图手机电子书阅读器软件主要分为 8 个功能大模块如图 3 所示,分别是欢迎模块、软件主界面、书籍管理、阅读管理、文件浏览、系统管理、使
19、用帮助、关于。其中书籍模块中还要文件扫描模块,阅读管理中有章节管理、书签管理、搜索管理。系统设置中有密码设置。其各个模块的详细设计如下:1.软件欢迎模块。该模块主要实现的功能是,通过 handler 来实现一个 2 秒的缓冲界面,然后通过 sharedpreferences 读取配置文件,判断是否有密码。如果有密码则跳转至密码验证界面;如果没有密码则判断是否为第一次使用此软件,如果是第一次使用则跳转至引导页面。2.软件主界面模块。该模块是一个通过 tabhost 标签组件来实现的一个分类管理功能。本界面的标签在屏幕的最下方,分别是:文件管理、我的书架、我的设置。点击不同的标签则显示不同的界面,
20、默认显示标签为“我的书架”,打开选项中会出现对应的视图。实现了将本程序关联成手机默认打开程序中,即从外部打开文本文件时选择查看方式中会出现本软件图标供用户选择以本软件打开。3.书籍管理。该模块是以书架的模式来展现书籍,并可以对书籍进行一些操作,本模块共有 3 个书架分别为:“最近阅读” 、 “历史阅读” 、 “收藏阅读” ,默认显示是“最近阅读”书架。本模块有导航按钮和书籍选择按钮。当弹出导航栏时,则把书籍从每行显示三本书籍调整到每行显示两本书籍。导航栏中与三大项:分类排序、添加书籍、清空书籍。每项里面又有子菜单。当点击导航里的按钮时会显示子功能导航,当再点击其它按钮时,会收起前面的子功能导航
21、,展开当前的子功能。当单击书籍选择按钮时会弹出书籍选择窗口,选择里面的书架则进入相应的书架界面,同时还可以通过左右滑动来切换书架界面。当单击书籍时会打开相应的书籍阅读界面,长按某书籍时会弹出书籍操作窗口。4.文件浏览。该模块使用 listview 组件显示文件目录,不同的文件类型显示不同的图标。最上面标题栏有导航按钮,当点击导航按钮时会从左侧弹出导航栏,导航栏中有标记文件按钮、分类排序按钮和添加到书架按钮,点击标记文件按钮或长按某文件或目录时则切换到多选模式,其中有多选按钮、反选按钮和取消按钮;点击分类排序则弹出子菜单,其中有按名称排序、按大小排序、按时间排序和按类型排序;点击添加到书架时如果
22、为选择文件则自动进入多选模式让用户进行文件选择,如果用户未选择则提示“请选择书籍” ,进行选择是用户可选择文件或目录,系统会自动进行扫描,把符合要求的文件添加到“最近书架”中,并弹出提示信息,其中有失败个数、已存在个数和成功个数。在多选模式下点击返回按钮或点击标记文件会取消多选模式。非多选模式下,用户点击文件时本软件会根据文件扩展名来判断打开文件方式,如果是文本文件则直接用本软件打开,并把其添加到“最近书架”中,其它格式则调用对应的软件打开,如果是未识别的类型则提示“没有打开此文件的应用” 。5.阅读管理。该模块通过自定义一个 view 视图来显示书页,通过自定义类来读取文本内容并通过 ond
23、raw()方法把文件名、文本内容、电量信息、时间信息和已读百分比进行绘制成图片,并通过 view 来把绘制的图片显示出来。第一次进入阅读页面是会有显示引导页面来指导用户如何读本页面进行操作。本页面操作包括点击事件和滑动事件,点击左侧屏幕进行向上翻页,点击右侧屏幕进行向下翻页,点击屏幕中间画出菜单选项。此菜单是使用 popupwindow 组件实现,菜单分上下两部分,上面的菜单有返回按钮、屏幕亮度调节按钮和添加书签按钮;下面的菜单有主题选择按钮、搜索按钮、书签按钮、目录按钮、字体大小调节按钮、翻页方式按钮、夜间模式切换按钮和退出软件按钮。6.系统设置。系统设置模块包括阅读设置和系统设置。阅读设置
24、中有连续阅读模式、阅读完成时自动归类、阅读休息提醒和阅读空闲退出。连续阅读模式:下次启动直接进入上次阅读的界面进行继续阅读;阅读完成时自动归类:当书籍阅读到最后一页后对此书籍自动移至“历史阅读”书架中;阅读休息提醒:设置一个时间,当用户在阅读页面停留至这个时间时会弹出个提示框来提醒用户进行休息;阅读空闲退出:设置一个时间,当用户停留在阅读界面并且为对其未进行任何操作至这个时间时,系统会自动关闭本软件。系统设置中有显示隐藏文件、使用软件密码、退出确认、使用帮助和关于。显示隐藏文件:当用户选择此设置后会在下次启动本软件时在文件浏览中显示隐藏文件;使用软件密码:用户可以对此软件进行密码设置;退出时确
25、认:当选择此设置后,退出软件时会显示一个确认框进行退出确认,未选择此设置时则会直接退出本软件;使用帮助:显示本软件的帮助信息;关于:显示关于本软件的信息。本软件的设置信息全部使用 sharedpreferences 存储。7.使用帮助。该模块通过读取帮助文件在 textview 中显示,并且为textview 添加滚动条。文件中含有本软件的特点、功能介绍、操作说明等, 。8.关于。该模块的主要功能是通过一个简单的弹出窗口来显示本软件的版本信息、联系方式。3 3 项目功能描述项目功能描述3.13.1 软件欢迎界面模块功能描述软件欢迎界面模块功能描述图 4 所示为欢迎界面模块,此模块作用是为了使软
26、件的进入更连贯自然,让用户不感觉界面的出现突兀。两秒后跳入其它页面,如果有密码跳入密码验证页面如图 6 所示,如果是第一次启动跳入引导页面如图 5 所示。 图 4 欢迎界面图 5 引导界面 图 6 密码验证界面关于欢迎页面启动的代码如下:new handler().postdelayed(new runnable() overridepublic void run() intent intent=null;initsavedata();/判断是否有密码if(share.getstring(mi_ma, ).equals()/判断是否为第一次启动if(share.getboolean(first
27、, true) edit.putboolean(first, false);mit();intent = new intent(welcomeactivity.this,guidemain.class);elseintent = new intent(welcomeactivity.this,activitymain.class);elseintent = new intent(welcomeactivity.this, gestureverifyactivity.class);intent.putextra(from_activity, 0);startactivity(intent);fi
28、nish();, 2000);关于引导界面滑动事件代码:overridepublic boolean ontouch(view v, motionevent event) switch (event.getaction() case motionevent.action_down: / 手指按下的 x 坐标downx = event.getx();break;case motionevent.action_up: float lastx = event.getx();/ 抬起的时候的 x 坐标大于按下的时候就显示上一张图片if (lastx downx) if (currentposition
29、 0) / 设置动画,mimageswitcher.setinanimation(animationutils.loadanimation( getapplication(), r.anim.left_in);mimageswitcher.setoutanimation(animationutils.loadanimation( getapplication(), r.anim.right_out);currentposition-;mimageswitcher.setimageresource(imgidscurrentposition% imgids.length);setimagebac
30、kground(currentposition); else toast.maketext(getapplication(), 向右滑动, toast.length_short).show();if (lastx downx) if (currentposition imgids.length - 1) mimageswitcher.setinanimation(animationutils.loadanimation(getapplication(), r.anim.right_in);mimageswitcher.setoutanimation(animationutils.loadani
31、mation(getapplication(), r.anim.left_out);currentposition+;mimageswitcher.setimageresource(imgidscurrentposition);setimagebackground(currentposition); else intent intent = new intent(guidemain.this, activitymain.class);startactivity(intent);finish();break;return true;通过 xml 设置引导页面动画,代码如下(以向左滑动为例): 3
32、.23.2 主界面功能描述主界面功能描述图 7 所示是软件的主页面,这是一个通过 tabhost 标签组件来实现的一个分类管理功能。本界面的标签在屏幕的最下方,分别是文件管理、我的书架、我的设置。点击不同的标签则显示不同的界面,默认显示标签为我的书架,打开选项中会出现对应的视图。实现了将本程序关联成手机默认打开程序中,即从外部打开文本文件时选择查看方式中会出现本软件图标供用户选择以本软件打开。图 7 软件主界面初始化选项卡代码如下:private void inittabs() mytabhost = (tabhost) findviewbyid(r.id.tabhost1);mytabhos
33、t.setup(this.getlocalactivitymanager();/添加文件管理选项mytabhost.addtab(mytabhost.newtabspec(tab_file).setindicator(composelayout(文件管理, r.drawable.folders).setcontent(new intent(this, fileexploreractivity.class).addflags(intent.flag_activity_clear_top);/添加我的书架选项mytabhost.addtab(mytabhost.newtabspec(tab_boo
34、ks).setindicator(composelayout(我的书架, r.drawable.books).setcontent(new intent(this, bookshelf.class).addflags(intent.flag_activity_clear_top);/添加我的设置选项mytabhost.addtab(mytabhost.newtabspec(tab_setting).setindicator(composelayout(我的设置, r.drawable.setting).setcontent(new intent(this, mysetting.class).a
35、ddflags(intent.flag_activity_clear_top);mytabhost.setcurrenttab(1);mytabhost.setontabchangedlistener(new ontabchangedlistener();updatetab(mytabhost);将程序关联成 android 系统默认打开程序代码: 接收从外部传来的参数并处理的代码:intent intent = getintent();string action = intent.getaction();if (intent.action_view.equals(action) string
36、 res_path = ;try res_path = urldecoder.decode(intent.getdatastring(), utf8); catch (unsupportedencodingexception e) e.printstacktrace();3.33.3 书籍管理模块功能描述书籍管理模块功能描述图 8 所示是书籍管理主页面,最上面标题栏有导航按钮和书籍选择按钮。当点击导航按钮时会从左侧弹出导航栏如图 9 所示,并把书籍从每行显示三个调整到每行显示两个。当点击导航里的按钮时会显示子功能导航,当再点击其它按钮时,会收起前面的子功能导航,展开当前的子功能。当单击书籍选择
37、按钮时会弹出书籍选择窗口,选择里面的书架则进入相应的书架界面,同时还可以通过左右滑动来切换书架界面。当单击书籍时会打开相应的书籍阅读界面,长按某书籍时会弹出书籍操作窗口如图 10 所示,书籍操作窗口中有删除阅读记录、删除阅读记录和文件、移动到历史书架、移动到收藏书籍、查看书籍详情和分享本书,不同书架中的操作项略有不同。 图 8 书架效果页面图 9 导航栏页面 图 10 书籍操作窗口初始化 viewpager 的核心代码如下:private void initviewpager() mpager = (viewpager) findviewbyid(r.id.vpager);listviews
38、= new arraylist();intent intent = new intent(bookshelf.this, bookshelfactivity.class);intent.putextra(book_shelf, myconstant.books_recently);listviews.add(getview(bookshelfrecently, intent);intent intent2=new intent(bookshelf.this, bookshelfactivity.class);intent2.putextra(book_shelf, myconstant.boo
39、ks_history);listviews.add(getview(bookshelfhistory, intent2);intent intent3=new intent(bookshelf.this, bookshelfactivity.class);intent3.putextra(book_shelf, myconstant.books_collect);listviews.add(getview(bookshelfcollect, intent3);adapter = new mypageradapter(listviews);mpager.setadapter(adapter);m
40、pager.setcurrentitem(0);mpager.setonpagechangelistener(new myonpagechangelistener();单击书籍跳转至阅读页面进行阅读代码如下:private void goreadactivity(bookinfo tem) if(new file(tem.bookpath).exists() intent intent = new intent(bookshelfactivity.this, readeractivity.class);bundle = new bundle(); bundle.putint(id, tem.b
41、ookid); bundle.putstring(name, tem.bookname); bundle.putstring(path, tem.bookpath); bundle.putint(pos, tem.pos); bundle.putdouble(percentage, tem.readpercentage); intent.putextras(bundle); startactivity(intent); elsebookstableoperate.delete(tem.bookid);adapter.notifydatasetchanged();toast.maketext(b
42、ookshelfactivity.this, 书籍文件不存在,移除记录, toast.length_short).show();书籍排序的核心代码(以按时间排序为例):simpledateformat format = new simpledateformat(yyyy-mm-dd hh:mm:ss);try long time1 = format.parse(book1.lastread).gettime();long time2 = format.parse(book2.lastread).gettime();if (time1 time2) return -1; else return
43、book1.booknparetoignorecase(book2.bookname); catch (parseexception e) e.printstacktrace();分享本书的代码如下:intent sendintent = new intent(); sendintent.setaction(intent.action_send); sendintent.putextra(intent.extra_text, +selectbook.bookname+这本书还不错,分享给大家看看!); sendintent.settype(text/plain); startactivity(
44、sendintent);点击添加书籍中的快速扫描按钮,进入此界面开始扫描,通过自定义文件名过滤类来进行搜索并显示正在扫描界面,其中有扫描到的文件数目如图 11 所示。扫描完成后使用 listview 组件显示扫描结果,最上面标题栏有返回按钮、我的书籍标题、重新扫描按钮。当长按某文件时则切换到多选模式如图 12 所示,最上面标题栏改变为标记全部按钮、选中的文件数目显示、加入书架按钮、取消按钮。多选模式下可以点击文件进行逐个选择,也可进行全选和取消全选操作。当用户选择是标题栏上会有对应的已选文件个数显示。选好之后点击加入书架将会把选中的文件加入最近书架中,也可以点击取消则取消多选模式。图 11 正
45、在扫描图 12 多选模式时时显示扫描到的文件个数部分代码:handler handler = new handler() public void handlemessage(message msg) if (msg.what != -1) numtext.settext( + msg.what); else listdata = listtem;ll.setvisibility(view.gone);super.handlemessage(msg);class updatabooks extends thread overridepublic void run() handler.sendem
46、ptymessage(1);getallfiles(file);handler.sendemptymessage(-1);扫描文本文件部分代码:public void getallfiles(file root) file files = root.listfiles(new myfilefilter(false,txt);if (files != null) for (file f : files) if (f.isdirectory() getallfiles(f); else if ( f.length() 1024 * 100) map tem = new hashmap();tem.
47、put(filename, f.getname();tem.put(filepath, f.getabsolutepath();tem.put(filesize, getfilesize(f.length();num+;handler.sendemptymessage(num);listtem.add(tem);isselect.add(false);3.43.4 文件浏览模块功能描述文件浏览模块功能描述下面是文件浏览模块主页面,使用 listview 组件显示文件目录,不同的文件类型显示不同的图标如图 13 所示。最上面标题栏有导航按钮,当点击导航按钮时会从左侧弹出导航栏如图 14 所示,导
48、航栏中有标记文件按钮、分类排序按钮和添加到书架按钮,点击标记文件按钮或长按某文件或目录时则切换到多选模式,其中有多选按钮、反选按钮和取消按钮;点击分类排序则弹出子菜单,其中有按名称排序、按大小排序、按时间排序和按类型排序;点击添加到书架时如果为选择文件则自动进入多选模式让用户进行文件选择,如果用户未选择则提示“请选择书籍” ,进行选择是用户可选择文件或目录,系统会自动进行扫描,把符合要求的文件添加到“最近书架”中,并弹出提示信息,其中有失败个数、已存在个数和成功个数。在多选模式下点击返回按钮或点击标记文件会取消多选模式。非多选模式下,用户点击文件时本软件会根据文件扩展名来判断打开文件方式如图
49、15 所示,如果是文本文件则直接用本软件打开,并把其添加到“最近书架”中,其它格式则调用对应的软件打开,如果是未识别的类型则提示“没有打开此文件的应用” 。 图 13 文件浏览页面图 14 文件浏览导航栏图 15 打开视频文件文件路径导航实现代码:public void navigationbar() string strpath = null;try strpath = currentparent.getcanonicalpath().split(/); catch (ioexception e1) e1.printstacktrace();tvpath.removeallviews();f
50、or (int i = 1; i 1) if (i = 2) imagetext.setpadding(10, 0, 20, 0);imagetext.settext(存储器); else imagetext.setpadding(10, 0, 20, 0);imagetext.settext(strpathi);if (i = strpath.length - 1) linyou.setbackgroundresource(r.drawable.rights_); else linyou.setbackgroundresource(r.drawable.middle);linyou.seto
51、nclicklistener(new imagetextlistener(i,strpath.length, strpath);framelayout.addview(linyou);framelayout.addview(imagetext);tvpath.addview(framelayout);不同类型文件打开方式的核心代码如下:private void openphoto(string work_answer) intent intent = null;final string res_path = work_answer;string suffixname=res_path.subs
52、tring(res_path.lastindexof(.)+ 1).tolowercase();if (!new file(res_path).exists() toast.maketext(this, suffixname + 资源不存在,toast.length_short).show(); else /选择打开方式if (doc.equals(suffixname) | docx.equals(suffixname) intent = utils.getwordfileintent(res_path);else if (ppt.equals(suffixname)|pptx.equals
53、(suffixname)intent = utils.getpptfileintent(res_path);else if (xls.equals(suffixname)|xlsx.equals(suffixname)intent = utils.getexcelfileintent(res_path); else if (jpg.equals(suffixname) | png.equals(suffixname)|gif.equals(suffixname)|bmp.equals(suffixname) intent = utils.getimagefileintent(res_path)
54、; else if (pdf.equals(suffixname) intent = utils.getpdffileintent(res_path); else if (mp3.equals(suffixname) intent = utils.getaudiofileintent(res_path); else if (html.equals(suffixname) intent = utils.gethtmlfileintent(res_path); else if (chm.equals(suffixname) intent = utils.getchmfileintent(res_p
55、ath); else if (mp4.equals(suffixname) | 3gp.equals(suffixname)|wmv.equals(suffixname)|flv.equals(suffixname)|rmvb.equals(suffixname)|avi.equals(suffixname)intent = utils.getvideofileintent(res_path); else if (txt.equals(suffixname) /设置文本打开方式为当前应用int p1 = res_path.lastindexof(/);int p2 = res_path.las
56、tindexof(.);long mfilesize = new file(res_path).length();bookdatabasehelper helper = new bookdatabasehelper(fileexploreractivity.this);sqlitedatabase db = helper.getwritabledatabase();bookstableoperate bookstableoperate = new bookstableoperate(db);bookstableoperate.insert(res_path.substring(p1 + 1,
57、p2),res_path, getfilesize(mfilesize);activitymain.mytabhost.setcurrenttab(1);helper = new bookdatabasehelper(fileexploreractivity.this);db = helper.getwritabledatabase();bookstableoperate = new bookstableoperate(db);bookinfo book = bookstableoperate.getbook(res_path);intent it = new intent(fileexplo
58、reractivity.this,readeractivity.class);bundle bundle = new bundle();bundle.putint(id, book.bookid);bundle.putstring(name, book.bookname);bundle.putstring(path, res_path);bundle.putint(pos, book.pos);it.putextras(bundle);startactivity(it);db.close();return; else if (apk.equals(suffixname) intent = ne
59、w intent(intent.action_view);intent.setdataandtype(uri.fromfile(new file(suffixname),application/vnd.android.package-archive);startactivity(intent); else toast.maketext(this, 不支持 + suffixname + 文件格式, toast.length_short).show();try this.startactivity(intent); catch (exception e) toast.maketext(this,
60、没有打开此文件的应用, toast.length_short).show();e.printstacktrace();3.53.5 阅读管理模块功能描述阅读管理模块功能描述图 16 所示是电子书阅读主要页面,本页面通过自定义一个 view 视图来显示书页,通过自定义类来读取文本内容并通过 ondraw()方法把文件名、文本内容、电量信息、时间信息和已读百分比进行绘制成图片,并通过 view 来把绘制的图片显示出来。第一次进入阅读页面是会有显示引导页面来指导用户如何读本页面进行操作如图 17 所示。本页面操作包括点击事件和滑动事件,点击左侧屏幕进行向上翻页,点击右侧屏幕进行向下翻页,点击屏幕中间画出菜单选项如图 18 所示。 图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村集体资金入股合同范本
- 鱼船买卖合同协议书模板
- 船员的正规劳务合同范本
- 芯模板行业期货合同范本
- 游艇修理合同协议书模板
- 照明灯安装合同补充协议
- 高速便道租用协议书范本
- 肇庆正规劳务派遣协议书
- 高价回购铝合金合同范本
- 理发店长期消费合同范本
- 《大模型原理与技术》全套教学课件
- 《出口退税培训》课件
- 雾化吸入疗法课件
- 高考补习班招生策划书策划方案
- 康明斯产品合格证
- 矿山废水处理行业调研及投资前景分析报告
- DB13 5808-2023 餐饮业大气污染物排放标准
- 【五升六暑期阅读】专题10.环境描写及其作用-2024年五升六暑期阅读专项提升(统编版)5
- 【电商直播对消费者购买行为影响:以抖音直播为例开题报告1800字】
- AQ 2003-2018 轧钢安全规程(正式版)
- (高清版)WST 348-2024 尿液标本的采集与处理
评论
0/150
提交评论