基于Android系统的电子书阅读器的设计与实现_第1页
基于Android系统的电子书阅读器的设计与实现_第2页
基于Android系统的电子书阅读器的设计与实现_第3页
基于Android系统的电子书阅读器的设计与实现_第4页
基于Android系统的电子书阅读器的设计与实现_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、太原工业学院毕业设计(论文)4.3.2 建表语句1)创建:1、创建书的表:create table IF NOT EXISTS book(bid integer primary key autoincrement,bpath varchar(255) not null); 2、创建书签的表:create table IF NOT EXISTS bookmark(bmid integer primary key autoincrement, bpath varchar(50) not null,bmname varchar(50) not null,bmoffset integer not nu

2、ll,bmsavetime varchar(20) not null);3、创建用户管理的表:create table IF NOT EXISTS user(userid integer primary key autoincrement, username varchar(20) not null,password varchar(20) not null, telephone varchar(20) not null);4、创建最近阅读的表create table IF NOT EXISTS nearlyread(bookid integer primary key autoincreme

3、nt, bookname varchar(50) not null,bookreadtime varchar(20) not null);5、创建下载管理的表create table IF NOT EXISTS down(downid integer primary key autoincrement, downuser varchar(20) not null,downbook varchar(20) not null, downtime varchar(20) not null);2)SQlite3数据库使用方法:选择:select from bookmark where bmid=1;插

4、入:insert (bookmark,null,values);删除:delete from bookmark where bmid=3 ;查找:query(table, columns, selection, selectionArgs, groupBy, having, orderBy)4.3.3 数据表分析本数据库用的是一个轻量级嵌入型数据库sqlite3 ,即创建了一个数据库reader.db,在数据库中创建了几张数据表。在建设网站系统或者软件之前,我们必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保

5、证关键数据在意外情况下不会被破坏,可以说数Book表(用来存放书籍,如表4-1):字段名称数据类型条件约束bidintegerprimary keybpathvarchar(255)not null表 4-1 书籍数据表Bookmark表(管理书签,如表4-2):字段名称数据类型条件约束BmidIntegerprimary keyBpathvarchar(50)not nullBmnamevarchar(50)not nullbmoffsetIntegernot nullmsavetimevarchar(20)not null表 4-2 书签数据表User表(用户数据,如表4-3):字段名称数

6、据类型条件约束UseridIntegerprimary keyusernamevarchar(50)not nullpasswordvarchar(50)not nulltelephonevarchar(20)not null表 4-3 用户数据表Nearlyread表(最近阅读,如表4-4):字段名称数据类型条件约束BookidIntegerprimary keybooknamevarchar(50)not nullbookreadtimevarchar(20)not null表 4-4 最近阅读数据表Down表(下载,如表4-5):字段名称数据类型条件约束DownidIntegerprim

7、ary keyDownuservarchar(50)not nulldowntimevarchar(20)not null表 4-5下载数据表 5.4.1 获取sd卡上的txt文本由于一个Android模拟器或者是一个手机客户终端上只会配置一个sdcard,所以一步移动设备上有各种各样的应用App,而且各种App都可能会由数据或者文件存储到移动设备的sdcard上,故而有各式各样的文件类型是该款软件不需要的。也是用户选择本款软件时所不需要的信息文件,于是通过构造一个过滤式的方法让软件只接受来自sdcard上的TXT格式的文本文件。该方法是先通过判断是否存储路径是sdcard,通过getReco

8、rdFiles()方法过滤掉其他无用文件,将剩余的TXT文件放置集合AirrayList中,然后通过Android的空间Listview将其目录结构文件给显示出来。代码如下:private void getRecordFiles() recordFiles= new ArrayList<String>(); if (isSdcard) File files = txtDir.listFiles();if (files != null) for (int i = 0; i < files.length; i+) if (filesi.getName().indexOf(&quo

9、t;.") >= 0) /* 只取.txt文件 */String file = filesi.getName().substring(filesi.getName().indexOf(".");if (file.toLowerCase().equals(".txt")recordFiles.add(filesi.getName(); 41获取文件名开始获取文件TXT文件?过滤存放至集合结束是否图5-1 文件过滤流程图5.4.2 长按选项删除可能在漫长的使用软件生活中,用户会在sdcard里面积累十分多的TXT文件数量,所以这里提供一个删除

10、功能供用户删除一些很久不用的文件。该功能通过获取到Android控件ListView上每一条Item的长按事件进行绑定事件监听,通过该行为进行功能描述,通过获取系统对于sdcard里面文件的操作权限来对于sdcard里面的TXT文件进行删除。下面是删除的方法delFile()的部分代码实现:public void delFile(String filePathAndName) try String filePath ="/sdcard/"+filePathAndName; filePath = filePath.toString(); java.io.File myDelF

11、ile = new java.io.File(filePath); myDelFile.delete(); catch (Exception e) Toast.makeText(this, "删除文件操作出错", 1000).show(); e.printStackTrace(); 5.4.3 阅读文本界面的实现这是该款软件最基本也是最重要的功能对于TXT文本文件的可视化读取。由于软件中对于sdcard里面的文件的读取可以是从各种各样的界面上获取要读取的TXT文件资源,比如可以从本地管理列表直接读取,也可以从最近阅读列表读取,或者是从阅读界面来读取该文本的书签从而读取文本文

12、件的某一段。所以,通过Android的Intent(意图方式)传递数据,数据包括了实现本界面的Activity类名,也包括了要阅读文本的书名,还有就是要读取文件的开始页码比例。如果是非进度跳转功能,或者是书签的功能则默认进度读取开始页码也第一页。而这些数据则通过封装到某个对象中,用bundle传递给Intent,再通过Intent转发数据。以下便是通过BitmapFactory工厂封装了一些绘制阅读背景的方法的部分代码实现:mPageWidget.setBitmaps(mCurPageBitmap, mNextPageBitmap); mPageWidget.setOnTouchListene

13、r(new OnTouchListener() Overridepublic boolean onTouch(View v, MotionEvent e) boolean ret=false;if (v = mPageWidget) if (e.getAction() = MotionEvent.ACTION_DOWN) mPageWidget.abortAnimation();mPageWidget.calcCornerXY(e.getX(), e.getY();pagefactory.onDraw(mCurPageCanvas);if (mPageWidget.DragToRight()

14、try pagefactory.prePage(); catch (IOException e1) e1.printStackTrace();if(pagefactory.isfirstPage()return false;pagefactory.onDraw(mNextPageCanvas); else try pagefactory.nextPage(); catch (IOException e1) e1.printStackTrace();if(pagefactory.islastPage() return false;pagefactory.onDraw(mNextPageCanva

15、s);mPageWidget.setBitmaps(mCurPageBitmap, mNextPageBitmap); ret = mPageWidget.doTouchEvent(e);return ret;return false;); 开始获取文件名初始页面是否为%1?随机I/O流打开结束I/O流打开是否图5-2 随机流打开文件流程图5.4.4 menu按钮功能的实现 添加书签功能作为一款电子书阅读器软件,这个功能是个轻松快捷而且不可避免的功能,它能够将长篇的文本文件断点记录。如果用户在长时间的阅读过程中感觉到疲乏,但是文件依然没法短时间内看完,为了方便下次阅读则将当前页面记录,下次则可

16、以直接点击进入需要的页面阅读。该功能通过记录了文件的总字节长度及当前的阅读长度进行百分比计算。当前页面的字节则是通过之前已经计算好了的字体大小,每页会大概的存放多少字节数。 private void saveBookMarkDialog() final Dialog d = new Dialog(turntest.this);d.setTitle("添加书签");d.setContentView(R.layout.bookmark_dialog);final EditText et = (EditText) d.findViewById(R.id.bmet);final B

17、utton sure = (Button) d.findViewById(R.id.bmsure);final Button cancel = (Button) d.findViewById(R.id.bmcancel);/ 确定动作sure.setOnClickListener(new View.OnClickListener() public void onClick(View v) String bmn = et.getText().toString();if (bmn.length() < 1) d.dismiss();d.show(); else if (bmn.length(

18、) > 10) bmn.substring(0, 10);BookMark bm = new BookMark();bm.setBookPath(txtname);bm.setMarkName(bmn);bm.setCurrentOffset(pagefactory.m_mbBufEnd);bm.setSaveTime(DateUtil.dateToString(new Date();mHelper = new CRDBHelper(getApplicationContext();operateResult = mHelper.addBookMark(bm);mHelper.close(

19、);if (operateResult) Toast.makeText(turntest.this,"添加成功",1000).show(); else Toast.makeText(turntest.this,"添加失败",1000).show();d.dismiss(););以下是查找书签及实现跳转的部分代码实现:list=new ArrayList<String>();for (int i = 0; i < mBookMarkList.size(); i+) String mark=mBookMarkList.get(i).getM

20、arkName()+" "+mBookMarkList.get(i).getSaveTime(); list.add(mark);list_tag=(ListView)findViewById(R.id.list_tag);adapter=new ArrayAdapter(ShowBookmark.this,list_tag.setAdapter(adapter);/ 短按跳到书签list_tag.setOnItemClickListener(new OnItemClickListener() Overridepublic void onItemClick(AdapterV

21、iew<?> arg0, View arg1, int arg2,long arg3) / 获取到所点击的书签的 定位int Offset=mBookMarkList.get(arg2).getCurrentOffset();Intent mIntent=new Intent(ShowBookmark .this, turntest.class);Bundle mB=new Bundle();mB.putString("Activity", "ShowBookmarkActivity");mB.putInt("Offset"

22、;, Offset);mIntent.putExtras(mB);startActivity(mIntent);finish();); 删除书签:该功能就是简单的运用对于书签的SQLite数据库操作,通过对于ListView组件的长按事件添加监听,程序自动生成对话框。以下是部分代码实现:list_tag.setOnItemLongClickListener (new OnItemLongClickListener() Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, lo

23、ng arg3) final int pos=arg2;new AlertDialog.Builder(ShowBookmark.this).setTitle("提示").setMessage("删除该书签").setPositiveButton("确定", new OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) boolean b = mHelper.deleteBookMark(mBookMarkList.get(po

24、s).getBookMarkId();if (b && mBookMarkList.size() > 0) list.remove(pos); adapter.notifyDataSetChanged();).setNegativeButton("取消", new OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) dialog.dismiss();).show();return false;); /退出 6.1功能界面打开软件,会从Logo界

25、面自动跳转到该功能界面,该功能的实现只是简单的通过Android系统的界面设计,通过对其TabHost选项卡组件的运用将界面纵向平行的设计为三个覆盖的界面,点击则切换成指定的选项界面,如图5-1:图5-1 功能界面6.2书籍选择主界面打开软件,软件就自动加载sd卡上的txt文档,该列表通过获取Android系统的Sdcard的路径然后获取到里面的所有文件,然后通过文件名后缀来判别是否为.TXT结尾的文件将其添加进入数据库,然后通过数据库查询列出所有该书籍表里面的集合从而列出要选择的文档,如图5-2:图 5-2 书籍选择界面6.3用户阅读界面用户左键单击要阅读的电子书籍,进入由Android的画

26、笔类,通过调用BitmapFactory工厂方法onDraw绘制动态页面效果,画面产生获取页面坐标事件,根据坐标来判断是向前翻页还是向后翻页,如图5-3是向后翻页: 图 5-3 用户阅读界面6.4菜单点击menu按钮,就回出现选择界面,增加书签、查看书签、退出阅读。如图5-4: 图5-4 Menu菜单功能6.5书签操作点击添加书签,会出现一个添加书签的界面,如图5-5图 5-5 添加书签点击查看标签就会出现相应文档的标签列表,如图5-6 图5-6 书签列表长按某个选项就会删除标签。如图5-6图 5-7 删除书签如果取消则返回标签界面,如果确定则删除书签。6.6书籍操作删除文档界面,从5-1图中

27、删除xyy2.txt长按菜单键,该功能是对于Android组件ListView的长按事件的添加监听功能,如图5-8:图5-8 删除书籍6.7最近阅读在阅读过得书籍会添加进最近阅读数据库,方便用户后期直接点击进入阅读,如图5-9:图5-9 最近阅读列表6.8用户登录通过与服务器的连接获取服务器提供了最新最热的书籍推荐,先登陆可以记录该用户的下载记录。如图:图5-10 在线登陆界面6.9在线中心图5-11 服务器获取的最新资源6.10性能分析6.10.1 概述及方案特点本软件是利用java语言在android平台上实现的一款阅读软件,使用起来方便,非常容易使用,也方便用户的操作,最重要的特点就是实现简单,没有过于复杂冗余的操作。数据库是使用sqlite3来进行存数。方案特点: (1)系统先进性本系统的先进性主要体现在能触屏翻页,能显示已经阅读的进度,大大减少了占用用户的时间,而且阅读起来比较方便快捷。(2)系统可扩展性由于本系统是基于android系统手机开发的软件,用java语言实现,无论是可读性,可维护性,还是可扩展性,都是比较优越的。(3) 智能性增加列表显示功能

温馨提示

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

评论

0/150

提交评论