失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android阅读器里的 txt 文本处理分页功能的实现:

android阅读器里的 txt 文本处理分页功能的实现:

时间:2023-05-30 11:09:55

相关推荐

android阅读器里的 txt 文本处理分页功能的实现:

txt文本处理分页功能的实现:

网上找了txt文本分页,实现小说阅读器的功能找了很久找不到自己想要的,所以自己实现一个专门处理txt文本分页功能的类.有人建议用randomAccessFile可以随机读取文本的任意位置,大文本也可以读,直接从这个类的方法上找可以实现自己想要的功能.

文本阅读器最重要的功能就是,我点击一个按钮或者滑动一下屏幕就可以是上一页或者下一页。

这个类应该公布两个方法得到上一页文本内容,得到下一页文本内容。

废话不多说直接上代码:

publicclassProcessText{

privatelongpages;//总页数

privatefinalintSIZE=900;//每一页的字节数字节数固定

privatelongbytescount;//字节总数

privatelongcurrentpage;//当前页面

privateRandomAccessFilereadFile;

//构造方法传入当前页为了实现书签的功能记录用户读取的文章位置

publicProcessText(Filefile,intcurrentpage){

try{

readFile=newRandomAccessFile(file,"r");

bytescount=readFile.length();//获得字节总数

pages=bytescount/SIZE;//计算得出文本的页数

this.currentpage=currentpage;

}catch(Exceptione){

e.printStackTrace();

}

}

//定位字节位置根据页数定位文本的位置

privatevoidseek(longpage){

try{

//if(pages)

readFile.seek(page*SIZE);

}catch(IOExceptione){

e.printStackTrace();

}

}

//固定读取SIZE+30个字节的内容为什么+30?

//读取的为字节需要进行转码转码不可能刚好转的就是文本内容,

//一页的末尾和开始出有可能乱码每一次多读30个字节是为了第一页乱码位置

//在第二页就可以正常显示出内容不影响阅读

privateStringread(){

//内容重叠防止末尾字节乱码

byte[]chs=newbyte[SIZE+30];

try{

readFile.read(chs);

}catch(IOExceptione){

e.printStackTrace();

}

returnnewString(chs,Charset.forName("utf-8"));

}

//上一页功能的实现

publicStringgetPre(){

Stringcontent=null;

//第一页的情况定位在0字节处读取内容当前页数不改变

if(currentpage<=1){

seek(currentpage-1);

content=read();

}else{

//其它页则定位到当前页-2处在读取指定字节内容例如当前定位到第二页的末尾2*SIZE上一页应该是第一页也就是从0位置开始读取SIZE个字节

seek(currentpage-2);

content=read();

currentpage=currentpage-1;

}

returncontent;

}

//下一页功能的实现

publicStringgetNext(){

Stringcontent=null;

if(currentpage>=pages){//当前页为最后一页时候,显示的还是最后一页

seek(currentpage-1);

content=read();

}else{

seek(currentpage);

content=read();

currentpage=currentpage+1;

}

returncontent;

}

}

如果觉得《android阅读器里的 txt 文本处理分页功能的实现:》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。