基于Android系统的电子书阅读器的设计与实现文档格式.docx
《基于Android系统的电子书阅读器的设计与实现文档格式.docx》由会员分享,可在线阅读,更多相关《基于Android系统的电子书阅读器的设计与实现文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
selectfrombookmarkwherebmid=1;
插入:
insert(bookmark,null,values);
删除:
deletefrombookmarkwherebmid=3;
查找:
query(table,columns,selection,selectionArgs,groupBy,having,orderBy)
4.3.3数据表分析
本数据库用的是一个轻量级嵌入型数据库sqlite3,即创建了一个数据库reader.db,在数据库中创建了几张数据表。
在建设网站系统或者软件之前,我们必须对系统所用到的数据进行大致的分
类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数
Book表(用来存放书籍,如表4-1):
字段名称
数据类型
条件约束
bid
integer
primarykey
bpath
varchar(255)
notnull
表4-1书籍数据表
Bookmark表(管理书签,如表4-2):
Bmid
Integer
Bpath
varchar(50)
Bmname
bmoffset
msavetime
varchar(20)
表4-2书签数据表
User表(用户数据,如表
4-3):
Userid
username
password
telephone
表4-3用户数据表
Nearlyread表(最近阅读,
如表4-4):
Bookid
bookname
bookreadtime
表4-4最近阅读数据表
Down表(下载,如表4-5)
・・
表4-5下载数据表
541获取sd卡上的txt文本
由于一个Android模拟器或者是一个手机客户终端上只会配置一个sdcard,
所以一步移动设备上有各种各样的应用App,而且各种App都可能会由数据或者
文件存储到移动设备的sdcard上,故而有各式各样的文件类型是该款软件不需要的。
也是用户选择本款软件时所不需要的信息文件,于是通过构造一个过滤式的方法让软件只接受来自sdcard上的TXT格式的文本文件。
该方法是先通过判断是否存储路径是sdcard,通过getRecordFiles()方法过滤掉其他无用文件,将剩余的TXT文件放置集合AirrayList中,然后通过Android的空间Listview将其目录结构文件给显示出来。
代码如下:
privatevoidgetRecordFiles(){
recordFiles=newArrayListvString>
();
if(isSdcard){
Filefiles[]=txtDir」istFiles();
if(files!
=null){
for(inti=0;
i<
files.length;
i++){
if(files[i].getName().indexOf("
."
)>
=0){
/*只取.txt文件*/
Stringfile=
files[i].getName().substring(files[i].getName().indexOf("
•"
));
if(file.toLowerCase().equals("
.txt"
))
recordFiles.add(files[i].getName());
}
图5-1文件过滤流程图
542长按选项删除
户获会在,,sdcard里面积累十分多的TXT文该功能通
可能在漫长的使用软件生活中,
件数量,所以这里提供一个删除功能供用户删除一些很久不用的文件。
过获取到Android控件ListView上每一条Item的长按事件进行绑定事件监听,card里面文件的操作权限来对
()的部分代
通过该行为进行功能描述,通过获取系
对于文
于sdcard里面的TXT文件进行删除。
下面是删除的方法
delFile
码实现:
是
publicvoiddelFile(StringfilePathAndName)^
try{
过滤
StringfilePath=
"
/sdcard/"
+filePathAndName;
java.io.FilemyDelFile=myDelFile.delete();
newjava.io.File(filePath);
catch(Exceptione){
Toast.makeText(this,"
删除文件操作出错"
1000).show();
e.printStackTrace();
5.4.3阅读文本界面的实现这是该款软件最基本也是最重要的功能——对于TXT文本文件的可视化读取。
由于软件中对于sdcard里面的文件的读取可以是从各种各样的界面上获取要读取的TXT文件资源,比如可以从本地管理列表直接读取,也可以从最近阅读列表读取,或者是从阅读界面来读取该文本的书签从而读取文本文件的某一段。
所以,通过Android的Intent(意图方式)传递数据,数据包括了实现本界面的Activity类名,也包括了要阅读文本的书名,还有就是要读取文件的开始页码比例。
如果是非进度跳转功能,或者是书签的功能则默认进度读取开始页码也第一页。
而这些数据则通过封装到某个对象中,用bundle传递给Intent,再通过Intent转发数据。
以下便是通过BitmapFactory工厂封装了一些绘制阅读背景的方法的部分代码实现:
mPageWidge.tsetBitmaps(mCurPageBitmap,mNextPageBitmap);
mPageWidge.tsetOnTouchListener(newOnTouchListener(){@Override
publicbooleanonTouch(Viewv,MotionEvente){
booleanret=false;
if(v==mPageWidge)t{
if(e.getAction()==MotionEvent.ACTION_DOW){N
mPageWidge.tabortAnimation();
mPageWidge.tcalcCornerXY(e.getX(),e.getY());
pagefactory.onDraw(mCurPageCanva)s;
if(mPageWidge.tDragToRight()){
pagefactory.prePage();
}catch(IOExceptione1){e1.printStackTrace();
if(pagefactory.isfirstPage())returnpagefactory.onDraw(mNextPageCanva)s;
}else{
try{pagefactory.nextPage();
if(pagefactory.islastPage())returnpagefactory.onDraw(mNextPageCanva)s;
ret=mPageWidge.tdoTouchEvent(e);
returnret;
returnfalse;
false;
});
图5-2[随机流打开文件流程图
544menu按钮功能的实现
添加书签功能一一作为一款电子书阅读器软件,这个功能是个轻松快捷而且不可避免的功能,它能够将长篇的文本文件断点记录。
如果用户在长时间的阅读过程中感觉到疲乏,但是文件依然没法短时间内看完,为了方便下次阅读则将当前页面记录,下次则可以直接点击进入需要的页面阅读。
否该功能通过记录了文件的总字节长度及当前的阅读长度进行百分分比计算。
当前页面的字节则是通过之前已经计算好了的字体大小,每页会大概的存放多少字节数。
privatevoidsaveBookMarkDiqlog(){
finalDialogd=newD