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

结束 存放至集合 TXT文件? 是 获取文件名 过滤 否 获取文件 开始

图5-1 文件过滤流程图

5.4.2 长按选项删除

可能在漫长的使用软件生活中,用户会在sdcard里面积累十分多的TXT文件数量,所以这里提供一个删除功能供用户删除一些很久不用的文件。该功能通过获取到Android控件ListView上每一条Item的长按事件进行绑定事件监听,通过该行为进行功能描述,通过获取系统对于sdcard里面文件的操作权限来对于sdcard里面的TXT文件进行删除。下面是删除的方法delFile()的部分代码实现:

public void delFile(String filePathAndName) {

try {

String filePath =\+filePathAndName; filePath = filePath.toString();

java.io.File myDelFile = new java.io.File(filePath); myDelFile.delete(); }

catch (Exception e) {

Toast.makeText(this, \删除文件操作出错\, 1000).show(); e.printStackTrace(); } }

5.4.3 阅读文本界面的实现

这是该款软件最基本也是最重要的功能——对于TXT文本文件的可视化读取。由于软件中对于sdcard里面的文件的读取可以是从各种各样的界面上获取要读取的TXT文件资源,比如可以从本地管理列表直接读取,也可以从最近阅读列表读取,或者是从阅读界面来读取该文本的书签从而读取文本文件的某一段。

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

mPageWidget.setBitmaps(mCurPageBitmap, mNextPageBitmap);

mPageWidget.setOnTouchListener(new OnTouchListener() {

@Override

public 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()) {

try {

pagefactory.prePage();

} catch (IOException e1) { }

e1.printStackTrace();

if(pagefactory.isfirstPage())return false; pagefactory.onDraw(mNextPageCanvas);

} else { }

mPageWidget.setBitmaps(mCurPageBitmap,

try {

pagefactory.nextPage();

} catch (IOException e1) { }

if(pagefactory.islastPage()) return false; pagefactory.onDraw(mNextPageCanvas);

e1.printStackTrace();

mNextPageBitmap);

}

}

}

return false;

}

ret = mPageWidget.doTouchEvent(e); return ret;

});

图5-2 随机流打开文件流程图

结束 I/O流打开 随机I/O流打开 初始页面是否为%1? 是 否 获取文件名 开始 5.4.4 menu按钮功能的实现

添加书签功能——作为一款电子书阅读器软件,这个功能是个轻松快捷而且不可避免的功能,它能够将长篇的文本文件断点记录。如果用户在长时间的阅读过程中感觉到疲乏,但是文件依然没法短时间内看完,为了方便下次阅读则将当前页面记录,下次则可以直接点击进入需要的页面阅读。该功能通过记录了文件的总字节长度及当前的阅读长度进行百分比计算。当前页面的字节则是通过之前已经计算好了的字体大小,每页会大概的存放多少字节数。 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 Button sure = (Button) d.findViewById(R.id.bmsure); final Button cancel = (Button) d.findViewById(R.id.bmcancel);