基于Android手机电子书阅读器的设计与实现毕业设计.doc_第1页
基于Android手机电子书阅读器的设计与实现毕业设计.doc_第2页
基于Android手机电子书阅读器的设计与实现毕业设计.doc_第3页
基于Android手机电子书阅读器的设计与实现毕业设计.doc_第4页
基于Android手机电子书阅读器的设计与实现毕业设计.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计 题 目 手机电子书阅读器的设计与实现 毕业设计 论文 原创性声明和使用授权说明毕业设计 论文 原创性声明和使用授权说明 原创性声明原创性声明 本人郑重承诺 所呈交的毕业设计 论文 是我个人在指导教 师的指导下进行的研究工作及取得的成果 尽我所知 除文中特别 加以标注和致谢的地方外 不包含其他人或组织已经发表或公布过 的研究成果 也不包含我为获得 及其它教育机构的学位 或学历而使用过的材料 对本研究提供过帮助和做出过贡献的个人 或集体 均已在文中作了明确的说明并表示了谢意 作 者 签 名 日 期 指导教师签名 日 期 使用授权说明使用授权说明 本人完全了解 大学关于收集 保存 使用毕业设计 论 文 的规定 即 按照学校要求提交毕业设计 论文 的印刷本和 电子版本 学校有权保存毕业设计 论文 的印刷本和电子版 并 提供目录检索与阅览服务 学校可以采用影印 缩印 数字化或其 它复制手段保存论文 在不以赢利为目的前提下 学校可以公布论 文的部分或全部内容 作者签名 日 期 学位论文原创性声明学位论文原创性声明 本人郑重声明 所呈交的论文是本人在导师的指导下独立进行 研究所取得的研究成果 除了文中特别加以标注引用的内容外 本 论文不包含任何其他个人或集体已经发表或撰写的成果作品 对本 文的研究做出重要贡献的个人和集体 均已在文中以明确方式标明 本人完全意识到本声明的法律后果由本人承担 作者签名 日期 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留 使用学位论文的规定 同意学校保留并向国家有关部门或机构送交论文的复印件和电子版 允许论文被查阅和借阅 本人授权 大学可以将本学位 论文的全部或部分内容编入有关数据库进行检索 可以采用影印 缩印或扫描等复制手段保存和汇编本学位论文 涉密论文按学校规定处理 作者签名 日期 年 月 日 导师签名 日期 年 月 日 注 意 事 项 1 设计 论文 的内容包括 1 封面 按教务处制定的标准封面格式制作 2 原创性声明 3 中文摘要 300 字左右 关键词 4 外文摘要 关键词 5 目次页 附件不统一编入 6 论文主体部分 引言 或绪论 正文 结论 7 参考文献 8 致谢 9 附录 对论文支持必要时 2 论文字数要求 理工类设计 论文 正文字数不少于 1 万字 不包括图 纸 程序清单等 文科类论文正文字数不少于 1 2 万字 3 附件包括 任务书 开题报告 外文译文 译文原文 复印件 4 文字 图表要求 1 文字通顺 语言流畅 书写字迹工整 打印字体及大小符合要求 无错别字 不准请他人代写 2 工程设计类题目的图纸 要求部分用尺规绘制 部分用计算机绘制 所有图纸应符合国家技术标准规范 图表整洁 布局合理 文字注释必须 使用工程字书写 不准用徒手画 3 毕业论文须用 A4 单面打印 论文 50 页以上的双面打印 4 图表应绘制于无格子的页面上 5 软件工程类课题应有程序清单 并提供电子文档 5 装订顺序 1 设计 论文 2 附件 按照任务书 开题报告 外文译文 译文原文 复印件 次序装 订 目录目录 摘要摘要 1 1 项目开发目标 1 1 1 项目来源 1 1 2 开发目标 1 2 项目总体设计 2 2 1 技术框架设计 2 2 2 数据库设计 2 2 3 功能框架设计 5 3 项目功能描述 8 3 1 软件欢迎界面模块功能描述 8 3 2 主界面功能描述 10 3 3 书籍管理模块功能描述 12 3 4 文件浏览模块功能描述 16 3 5 阅读管理模块功能描述 20 3 5 1 章节管理模块功能描述 24 3 5 2 书签管理模块功能描述 27 3 5 3 搜索管理模块功能描述 28 3 6 设置管理模块功能描述 29 3 7 使用帮助模块功能描述 35 3 8 关于模块功能描述 36 4 项目技术总结 38 4 1 技术创新及特点 38 4 2 个人收获与体会 44 4 3 致谢 44 1 摘要摘要 在这个快节奏的时代 人们的空余时间越来越零碎 而且人们对智能手机 的依赖越来越重 所以 一个拥有丰富功能且能随时进行电子书阅读的电子书 阅读器的出现 则是我们刻不容缓的事情 此软件是在 Android 平台上进行设计开发 此软件的开发是通过了客户需 求分析阶段以及技术可行性分析阶段 然后进行总体设计阶段和详细设计编码 等阶段 此软件不仅具有基本的电子书阅读功能 而且还拥有丰富的实用功能 设计 例如目录自动生成以及阅读界面设置 阅读休息提醒等 经过不断的测 试与完善 电子书阅读器功能稳定 并且在真机上对其进行了测试与验证 基 本上达到了用户的需求标准 关键字 电子书阅读器关键字 电子书阅读器 Android 文件浏览文件浏览 书架书架 2 1 1 项目开发目标项目开发目标 1 11 1 项目来源项目来源 此次开发的项目是手机电子书阅读器 属于自选项目 随着社会的发展 人们的生活节奏也越来越快空闲时间也越来越零碎 人们没有了大段的时间来 进行书籍的阅读 所以一款能利用零碎时间进行随时阅读的软件成为了我们的 需求 而一款能在人们随身携带的手机上运行的阅读软件成为了大家的选择 以前我们看看杂志 小说都要去图书馆借阅 而且时间有限 很不方便 而在 电脑上看杂志 看小说 文档也是很不方便的 以此看来 一个好的手机阅读 器软件的开发是相当有必要的 1 21 2 开发目标开发目标 手机电子书阅读器的开发目标就是让用户可以把零碎的空余时间有效的利 用到书籍的阅读上 而且用户在没有网路的情况下也可以正常的进行书籍的阅 读 让用户摆脱书籍的笨重携带不方便等确定 给予阅读者更大的便利性更好的 舒适性 此软件是在 Android 平台上进行设计开发 它的界面丰富简洁但是却 不简单 它包含了书架界面 文件查看界面 软件设置界面 书籍阅读界面等 界面 它的功能全面 其优越性表现在 自动扫描手机里的所有书籍 手动从 文件夹中选择添加书籍 自动为书籍生成章节目录 添加查看书签 全文关键 词搜索 阅读主题选择 阅读字体大小设置等功能 此外 给用户更清晰方便 的界面 也是本软件的出发点之一 3 2 2 项目总体设计项目总体设计 2 12 1 技术框架设计技术框架设计 手机电子书阅读器采用了常见的三层架构 分别为 UI 层 业务逻辑层和数 据层 UI 层 数据展示与管理 用户交互 绘制 Adapter 业务逻辑层 数据加式 数据层的数据有时候需要进行加工成 UI 层需要的 数据 数据变化的通知机制 数据层 数据访问 SQLite 文件等 缓存 图片 文件等 配置文件 shared perference 此软件的开发环境 Windows7 Eclipse4 2 0 SDK UI Views Data Adapter U U I I BL Data Observer B B L L File SQLite Data Provider Memory Cache Local DataUtil Config DataData 图 1 软件框架结构 2 22 2 数据库设计数据库设计 E R 图是直观表示概念模型的工具 它有四个基本成分 4 矩形框 表示实体类型 菱形框 表示联系类型 椭圆形框 表示实体类型和联系类型的属性 对于关键码的属性 在属性 名下划一横线 直线 联系类型与其涉及的试题类型之间以直线连接 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 书 n n书 书 书 书书 书 书 书1 1 书 书 书 书 图 2 ER 图 数据库使用了 2 个实体 分别为书籍 书签 书籍与书签的对应关系为 1 n 在数据库的设计方面 为了实现数据库的完整性与一致性 我们使用了触 发器 在数据库的选用上 选择了自给自足的 无服务器的 零配置的 事务 性的 SQL 数据库引擎的 SQLite 数据库 数据库名称为 eBook db 共 2 个实体 表 分别为书籍表 书签表 与书籍 books 实体类的属性信息对应的字段信息表如表 1 所示 字段名类型说明 book idINTEGER书籍编号 book nameTEXT书籍名称 book pathTEXT书籍路径 file sizeTEXT书籍大小 last readDATETIME阅读时间 book shelfINTEGER所属书籍 read percentageDOUBLE已读比例 posINTEGER阅读位置 表 1 书籍表 书籍表 books 创建的 SQL 语句 5 CREATE TABLE books book id INTEGER PRIMARY KEY book name TEXT NOT NULL book path TEXT NOT NULL UNIQUE file size TEXT last read 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 创建的 SQL 语句 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 books FOR EACH ROW BEGIN DELETE FROM bookMarks WHERE book id old book id END 6 2 32 3 功能框架设计功能框架设计 密 码 管 理 章 节 管 理 文 件 扫 描 手机电子书阅读器 阅 读 管 理 文 本 搜 索 书 签 管 理 清 空 书 签 删 除 书 签 书 籍 管 理 系 统 设 置 文 件 浏 览 添 加 书 签 调 节 亮 度 主 题 选 择 修 改 密 码 取 消 密 码 设 置 密 码 生 成 章 节 删 除 章 节 加 入 书 籍 重 新 扫 描 标 记 文 件 退 出 确 认 隐 藏 文 件 添 加 书 籍 清 空 书 架 分 类 排 序 添 加 书 籍 标 记 文 件 文 件 排 序 夜 间 模 式 字 体 大 小 翻 页 模 式 帮 助 关 于 欢 迎 模 块 设 置 管 理 阅 读 设 置 连 续 阅 读 自 动 归 类 休 息 提 醒 空 闲 退 出 主 界 面 图 3 功能模块图 手机电子书阅读器软件主要分为 8 个功能大模块如图 3 所示 分别是欢迎 模块 软件主界面 书籍管理 阅读管理 文件浏览 系统管理 使用帮助 关于 其中书籍模块中还要文件扫描模块 阅读管理中有章节管理 书签管理 搜索管理 系统设置中有密码设置 其各个模块的详细设计如下 1 软件欢迎模块 该模块主要实现的功能是 通过 Handler 来实现一个 2 秒 的缓冲界面 然后通过 SharedPreferences 读取配置文件 判断是否有密码 如 果有密码则跳转至密码验证界面 如果没有密码则判断是否为第一次使用此软 件 如果是第一次使用则跳转至引导页面 2 软件主界面模块 该模块是一个通过 TabHost 标签组件来实现的一个分 类管理功能 本界面的标签在屏幕的最下方 分别是 文件管理 我的书架 我的设置 点击不同的标签则显示不同的界面 默认显示标签为 我的书架 打开选项中会出现对应的视图 实现了将本程序关联成手机默认打开程序中 即从外部打开文本文件时选择查看方式中会出现本软件图标供用户选择以本软 件打开 7 3 书籍管理 该模块是以书架的模式来展现书籍 并可以对书籍进行一些 操作 本模块共有 3 个书架分别为 最近阅读 历史阅读 收藏阅读 默认显示是 最近阅读 书架 本模块有导航按钮和书籍选择按钮 当弹出导 航栏时 则把书籍从每行显示三本书籍调整到每行显示两本书籍 导航栏中与 三大项 分类排序 添加书籍 清空书籍 每项里面又有子菜单 当点击导航 里的按钮时会显示子功能导航 当再点击其它按钮时 会收起前面的子功能导 航 展开当前的子功能 当单击书籍选择按钮时会弹出书籍选择窗口 选择里 面的书架则进入相应的书架界面 同时还可以通过左右滑动来切换书架界面 当单击书籍时会打开相应的书籍阅读界面 长按某书籍时会弹出书籍操作窗口 4 文件浏览 该模块使用 ListView 组件显示文件目录 不同的文件类型显 示不同的图标 最上面标题栏有导航按钮 当点击导航按钮时会从左侧弹出导 航栏 导航栏中有标记文件按钮 分类排序按钮和添加到书架按钮 点击标记 文件按钮或长按某文件或目录时则切换到多选模式 其中有多选按钮 反选按 钮和取消按钮 点击分类排序则弹出子菜单 其中有按名称排序 按大小排序 按时间排序和按类型排序 点击添加到书架时如果为选择文件则自动进入多选 模式让用户进行文件选择 如果用户未选择则提示 请选择书籍 进行选择是 用户可选择文件或目录 系统会自动进行扫描 把符合要求的文件添加到 最 近书架 中 并弹出提示信息 其中有失败个数 已存在个数和成功个数 在 多选模式下点击返回按钮或点击标记文件会取消多选模式 非多选模式下 用 户点击文件时本软件会根据文件扩展名来判断打开文件方式 如果是文本文件 则直接用本软件打开 并把其添加到 最近书架 中 其它格式则调用对应的 软件打开 如果是未识别的类型则提示 没有打开此文件的应用 5 阅读管理 该模块通过自定义一个 View 视图来显示书页 通过自定义类 来读取文本内容并通过 onDraw 方法把文件名 文本内容 电量信息 时间信 息和已读百分比进行绘制成图片 并通过 View 来把绘制的图片显示出来 第 一次进入阅读页面是会有显示引导页面来指导用户如何读本页面进行操作 本 页面操作包括点击事件和滑动事件 点击左侧屏幕进行向上翻页 点击右侧屏 幕进行向下翻页 点击屏幕中间画出菜单选项 此菜单是使用 PopupWindow 组 件实现 菜单分上下两部分 上面的菜单有返回按钮 屏幕亮度调节按钮和添 加书签按钮 下面的菜单有主题选择按钮 搜索按钮 书签按钮 目录按钮 字体大小调节按钮 翻页方式按钮 夜间模式切换按钮和退出软件按钮 6 系统设置 系统设置模块包括阅读设置和系统设置 阅读设置中有连续 阅读模式 阅读完成时自动归类 阅读休息提醒和阅读空闲退出 连续阅读模 式 下次启动直接进入上次阅读的界面进行继续阅读 阅读完成时自动归类 当书籍阅读到最后一页后对此书籍自动移至 历史阅读 书架中 阅读休息提 醒 设置一个时间 当用户在阅读页面停留至这个时间时会弹出个提示框来提 醒用户进行休息 阅读空闲退出 设置一个时间 当用户停留在阅读界面并且 为对其未进行任何操作至这个时间时 系统会自动关闭本软件 系统设置中有 显示隐藏文件 使用软件密码 退出确认 使用帮助和关于 显示隐藏文件 当用户选择此设置后会在下次启动本软件时在文件浏览中显示隐藏文件 使用 软件密码 用户可以对此软件进行密码设置 退出时确认 当选择此设置后 8 退出软件时会显示一个确认框进行退出确认 未选择此设置时则会直接退出本 软件 使用帮助 显示本软件的帮助信息 关于 显示关于本软件的信息 本 软件的设置信息全部使用 SharedPreferences 存储 7 使用帮助 该模块通过读取帮助文件在 TextView 中显示 并且为 TextView 添加滚动条 文件中含有本软件的特点 功能介绍 操作说明等 8 关于 该模块的主要功能是通过一个简单的弹出窗口来显示本软件的版 本信息 联系方式 9 3 3 项目功能描述项目功能描述 3 13 1 软件欢迎界面模块功能描述软件欢迎界面模块功能描述 图 4 所示为欢迎界面模块 此模块作用是为了使软件的进入更连贯自然 让用户不感觉界面的出现突兀 两秒后跳入其它页面 如果有密码跳入密码验 证页面如图 6 所示 如果是第一次启动跳入引导页面如图 5 所示 图 4 欢迎界面图 5 引导界面 图 6 密码验证界面 关于欢迎页面启动的代码如下 new Handler postDelayed new Runnable Override public void run Intent intent null initSaveData 判断是否有密码 if share getString mi ma equals 判断是否为第一次启动 if share getBoolean first true edit putBoolean first false mit intent new Intent WelcomeActivity this GuideMain class else intent new Intent WelcomeActivity this ActivityMain class 10 else intent new Intent WelcomeActivity this GestureVerifyActivity class intent putExtra from activity 0 startActivity intent finish 2000 关于引导界面滑动事件代码 Override public 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 0 设置动画 mImageSwitcher setInAnimation AnimationUtils loadAnimation getApplication R anim left in mImageSwitcher setOutAnimation AnimationUtils loadAnimation getApplication R anim right out currentPosition mImageSwitcher setImageResource imgIds currentPosition imgIds length setImageBackground currentPosition else Toast makeText getApplication 向右滑动 Toast LENGTH SHORT show if lastX downX 11 if currentPosition imgIds length 1 mImageSwitcher setInAnimation AnimationUtils loadAnimation getApplication R anim right in mImageSwitcher setOutAnimation AnimationUtils loadAnimation getApplication R anim left out currentPosition mImageSwitcher setImageResource imgIds currentPosition setImageBackground currentPosition else Intent intent new Intent GuideMain this ActivityMain class startActivity intent finish break return true 通过 xml 设置引导页面动画 代码如下 以向左滑动为例 3 23 2 主界面功能描述主界面功能描述 图 7 所示是软件的主页面 这是一个通过 TabHost 标签组件来实现的一个 分类管理功能 本界面的标签在屏幕的最下方 分别是文件管理 我的书架 我的设置 点击不同的标签则显示不同的界面 默认显示标签为我的书架 打 开选项中会出现对应的视图 实现了将本程序关联成手机默认打开程序中 即 从外部打开文本文件时选择查看方式中会出现本软件图标供用户选择以本软件 打开 12 图 7 软件主界面 初始化选项卡代码如下 private void initTabs myTabHost TabHost findViewById R id TabHost1 myTabHost 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 books setIndicator composeLayout 我的书架 R drawable books setContent new Intent this BookShelf class addFlags Intent FLAG ACTIVITY CLEAR TOP 13 添加我的设置选项 myTabHost addTab myTabHost newTabSpec tab setting setIndicator composeLayout 我的设置 R drawable setting setContent new Intent this MySetting class addFlags 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 res path try res path URLDecoder decode intent getDataString utf8 catch UnsupportedEncodingException e e printStackTrace 3 33 3 书籍管理模块功能描述书籍管理模块功能描述 图 8 所示是书籍管理主页面 最上面标题栏有导航按钮和书籍选择按钮 当点击导航按钮时会从左侧弹出导航栏如图 9 所示 并把书籍从每行显示三个 调整到每行显示两个 当点击导航里的按钮时会显示子功能导航 当再点击其 14 它按钮时 会收起前面的子功能导航 展开当前的子功能 当单击书籍选择按 钮时会弹出书籍选择窗口 选择里面的书架则进入相应的书架界面 同时还可 以通过左右滑动来切换书架界面 当单击书籍时会打开相应的书籍阅读界面 长按某书籍时会弹出书籍操作窗口如图 10 所示 书籍操作窗口中有删除阅读记 录 删除阅读记录和文件 移动到历史书架 移动到收藏书籍 查看书籍详情 和分享本书 不同书架中的操作项略有不同 图 8 书架效果页面图 9 导航栏页面 图 10 书籍操作窗口 初始化 ViewPager 的核心代码如下 private void InitViewPager mPager ViewPager findViewById R id vPager listViews 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 BOOKS 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 mPager setCurrentItem 0 mPager setOnPageChangeListener new MyOnPageChangeListener 15 单击书籍跳转至阅读页面进行阅读代码如下 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 bookId 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 else booksTableOperate delete tem bookId adapter notifyDataSetChanged Toast makeText BookShelfActivity 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 book1 bookNpareToIgnoreCase book2 bookName catch ParseException e e printStackTrace 分享本书的代码如下 Intent sendIntent new Intent sendIntent setAction Intent ACTION SEND sendIntent putExtra Intent EXTRA TEXT 16 selectBook bookName 这本书还不错 分享给大家看看 sendIntent setType text plain startActivity sendIntent 点击添加书籍中的快速扫描按钮 进入此界面开始扫描 通过自定义文件 名过滤类来进行搜索并显示正在扫描界面 其中有扫描到的文件数目如图 11 所 示 扫描完成后使用 ListView 组件显示扫描结果 最上面标题栏有返回按钮 我的书籍标题 重新扫描按钮 当长按某文件时则切换到多选模式如图 12 所示 最上面标题栏改变为标记全部按钮 选中的文件数目显示 加入书架按钮 取 消按钮 多选模式下可以点击文件进行逐个选择 也可进行全选和取消全选操 作 当用户选择是标题栏上会有对应的已选文件个数显示 选好之后点击加入 书架将会把选中的文件加入最近书架中 也可以点击取消则取消多选模式 图 11 正在扫描图 12 多选模式 时时显示扫描到的文件个数部分代码 Handler handler new Handler public void handleMessage Message msg if msg what 1 numText setText msg what 17 else listData listTem ll setVisibility View GONE super handleMessage msg class UpdataBooks extends Thread Override public void run handler sendEmptyMessage 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 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 所示 导航栏中有标记文件按钮 分类排序按 18 钮和添加到书架按钮 点击标记文件按钮或长按某文件或目录时则切换到多选 模式 其中有多选按钮 反选按钮和取消按钮 点击分类排序则弹出子菜单 其中有按名称排序 按大小排序 按时间排序和按类型排序 点击添加到书架 时如果为选择文件则自动进入多选模式让用户进行文件选择 如果用户未选择 则提示 请选择书籍 进行选择是用户可选择文件或目录 系统会自动进行扫 描 把符合要求的文件添加到 最近书架 中 并弹出提示信息 其中有失败 个数 已存在个数和成功个数 在多选模式下点击返回按钮或点击标记文件会 取消多选模式 非多选模式下 用户点击文件时本软件会根据文件扩展名来判 断打开文件方式如图 15 所示 如果是文本文件则直接用本软件打开 并把其添 加到 最近书架 中 其它格式则调用对应的软件打开 如果是未识别的类型 则提示 没有打开此文件的应用 图 13 文件浏览页面图 14 文件浏览导航栏图 15 打开视频文件 文件路径导航实现代码 public void navigationBar String strPath null try strPath currentParent getCanonicalPath split catch IOException e1 e1 printStackTrace tvpath removeAllViews for 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 strPath i if i strPath length 1 linyou setBackgroundResource R drawable rights else linyou setBackgroundResource R drawable middle linyou setOnClickListener 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 substring 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 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 20 gif equals suffixName bmp equals suffixName intent Utils getImageFileIntent res path 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 path 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 lastIndexOf 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 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 FileExplorerActivity 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 21 intent new 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 没有打开此文件的应用 Toast LENGTH SHORT show e printStackTrace 3 53 5 阅读管理模块功能描述阅读管理模块功能描述 图 16 所示是电子书阅读主要页面 本页面通过自定义一个 View 视图来显 示书页 通过自定义类来读取文本内容并通过 onDraw 方法把文件名 文本内 容 电量信息 时间信息和已读百分比进行绘制成图片 并通过 View 来把绘 制的图片显示出来 第一次进入阅读页面是会有显示引导页面来指导用户如何 读本页面进行操作如图 17 所示 本页面操作包括点击事件和滑动事件 点击左 侧屏幕进行向上翻页 点击右侧屏幕进行向下翻页 点击屏幕中间画出菜单选 项如图 18 所示 22 图 16 阅读引导界面 图 17 阅读引导页面 图 18 阅读菜单 此菜单是使用 PopupWindow 组件实现 菜单分上下两部分 上面的菜单有 返回按钮 屏幕亮度调节按钮和添加书签按钮 下面的菜单有主题选择按钮 搜索按钮 书签按钮 目录按钮 字体大小调节按钮 翻页方式按钮 夜间模 式切换按钮和退出软件按钮 点击主题选择按钮弹出主题选择窗口如图 19 所示 此选项共设置了 9 种主题供用户选择 当用户选择了主题阅读页面会自动改变 为当前选择的主题样式 点击屏幕亮度调节按钮弹出屏幕亮度设置窗口如图 20 所示 拖动屏幕亮度调节条屏幕亮度会随着用户的拖动而即时改变 点击翻页 方式按钮弹出翻页方式设置窗口如图 21 所示 此设置中共有三个按钮代表了三 种翻页方式 图 19 阅读主题选择 图 20 屏幕亮度设置图 21 翻页方式设置 第一次进入阅读界面显示引导页面的核心代码实现为 if share getBoolean is first true firstDialog edit putBoolean is first false mit 实现休息提醒和空闲退出代码 SuppressLint HandlerLeak Handler mTimeHandler new Handler public void handleMessage Message msg if msg what 1 xiuxiDialog 23 if msg what 2 SysApplication getInstance exit super handleMessage msg 对应屏幕事件处理的核心代码实现为 Override public boolean onTouch View v MotionEvent e mKXcont 0 if e getAction MotionEvent ACTION DOWN 手指按下时 xd e getX yd e getY if yd mHeightPixels 0 35 else if e getAction MotionEvent ACTION MOVE 移动时 x e getX y e getY if Math abs xd x 10 Math abs yd y 10 bool true else if e getAction MotionEvent ACTION UP 离开屏幕时 xu e getX yu e getY if bool if bool boolean ret f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论