基于Android系统的电子书阅读器的设计与实现

上传人:xmg****18 文档编号:127085605 上传时间:2020-03-30 格式:DOC 页数:20 大小:1.51MB
返回 下载 相关 举报
基于Android系统的电子书阅读器的设计与实现_第1页
第1页 / 共20页
基于Android系统的电子书阅读器的设计与实现_第2页
第2页 / 共20页
基于Android系统的电子书阅读器的设计与实现_第3页
第3页 / 共20页
基于Android系统的电子书阅读器的设计与实现_第4页
第4页 / 共20页
基于Android系统的电子书阅读器的设计与实现_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《基于Android系统的电子书阅读器的设计与实现》由会员分享,可在线阅读,更多相关《基于Android系统的电子书阅读器的设计与实现(20页珍藏版)》请在金锄头文库上搜索。

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 null,bmsavetime

2、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 autoincrement, bookname v

3、archar(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;插入:insert (book

4、mark,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):字段名称数据类型条件约束UseridI

6、ntegerprimary 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):字段名称数据类型条件约束DownidIntegerprimary keyDownuse

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

8、其他无用文件,将剩余的TXT文件放置集合AirrayList中,然后通过Android的空间Listview将其目录结构文件给显示出来。代码如下:private void getRecordFiles() recordFiles= new ArrayList(); if (isSdcard) File files = txtDir.listFiles();if (files != null) for (int i = 0; i = 0) /* 只取.txt文件 */String file = filesi.getName().substring(filesi.getName().indexOf

9、(.);if (file.toLowerCase().equals(.txt)recordFiles.add(filesi.getName(); . . .获取文件名开始获取文件TXT文件?过滤存放至集合结束是否图5-1 文件过滤流程图5.4.2 长按选项删除可能在漫长的使用软件生活中,用户会在sdcard里面积累十分多的TXT文件数量,所以这里提供一个删除功能供用户删除一些很久不用的文件。该功能通过获取到Android控件ListView上每一条Item的长按事件进行绑定事件监听,通过该行为进行功能描述,通过获取系统对于sdcard里面文件的操作权限来对于sdcard里面的TXT文件进行删除

10、。下面是删除的方法delFile()的部分代码实现:public void delFile(String filePathAndName) try String filePath =/sdcard/+filePathAndName; filePath = filePath.toString(); java.io.File myDelFile = new java.io.File(filePath); myDelFile.delete(); catch (Exception e) Toast.makeText(this, 删除文件操作出错, 1000).show(); e.printStackT

11、race(); 5.4.3 阅读文本界面的实现这是该款软件最基本也是最重要的功能对于TXT文本文件的可视化读取。由于软件中对于sdcard里面的文件的读取可以是从各种各样的界面上获取要读取的TXT文件资源,比如可以从本地管理列表直接读取,也可以从最近阅读列表读取,或者是从阅读界面来读取该文本的书签从而读取文本文件的某一段。所以,通过Android的Intent(意图方式)传递数据,数据包括了实现本界面的Activity类名,也包括了要阅读文本的书名,还有就是要读取文件的开始页码比例。如果是非进度跳转功能,或者是书签的功能则默认进度读取开始页码也第一页。而这些数据则通过封装到某个对象中,用bun

12、dle传递给Intent,再通过Intent转发数据。以下便是通过BitmapFactory工厂封装了一些绘制阅读背景的方法的部分代码实现:mPageWidget.setBitmaps(mCurPageBitmap, mNextPageBitmap); mPageWidget.setOnTouchListener(new OnTouchListener() Overridepublic boolean onTouch(View v, MotionEvent e) boolean ret=false;if (v = mPageWidget) if (e.getAction() = MotionE

13、vent.ACTION_DOWN) mPageWidget.abortAnimation();mPageWidget.calcCornerXY(e.getX(), e.getY();pagefactory.onDraw(mCurPageCanvas);if (mPageWidget.DragToRight() 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(mNextPageCanvas);mPageWidget.setBit

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号