图 4.5 TabMenu打开时的动画popup_enter.xml
图 4.6 TabMenu关闭时的动画popup_exit.xml
图 4.7阅读界面运行截图
图 4.8 TabMenu显示效果截图
4.2 数据库实现
在Android系统内嵌了一个轻量级数据库SQLiteDataBase,它占用的资源非常低、需要的内存空间少、处理速度比较快和支持事务处理功能等。
在文本阅读软件中,主要创建了三张表,分别是book_info表、book_mark表、book_read_setting表。
Android数据库的存储位置在data/data/com.lrc/databases/目录下,Android是利用ContentProvider作为内容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。通过Context.getContentResolver()方法直接对数据库进行操作。程序中数据库的类为BookOpenHelper extend SQLiteOpenHelper和BookContentProvider extend ContentProvider。
Android提供了标准的数据库创建方式,继承SQLiteOpenHelper,实现onCreate和onUpgrade两个方法,有个好处就是便于数据库版本的升级,连接数据库的算法如下:
图 4.9 程序截图
ContentProvider 提供数据库操作方法和为其它应用程序提供访问此数据库的途径,具体的实现如下:
图 4.10 程序截图
4.3 系统功能实现
4.3.1 数据实体化
为了能够更好的调用数据库中的数据,在本课题中设计了一个实体对象层,将数据实体化。在此层中的结构体对应着数据库中几个表的具体数据:
建立书籍信息结构体如下所示:
public class Book
{
private int bookId; //书籍ID
private String bookName; //书名
private String bookAuthor; //作者
private String bookPath; //书籍路径
private String bookAddTime; //添加时间
private String bookOpenTime; //最后打开时间
private int bookCategoryId; //所属类别ID
private String bookCategroyName; //所属类别名
private String bookSize; //书籍大小
private String bookProgress; //最后阅读进度
set、get方法略
……………………………..
}
建立书签信息结构体如下所示:
public class BookMark
{
private int bookMarkId; //书签ID
private int bookId; //书籍ID
private String bookName; //书名
private String bookPath; //书籍路径
private String bookMarkAddTime; //书签添加时间
private String bookMarkProgress; //书签进度
private String bookMarkDetail; //书签描述
private int bookMarkBeginPosition;//书签添加时文本Begin值 Android平台手机文本阅读软件的开发与设计(13):http://www.youerw.com/jisuanji/lunwen_1192.html