Android文本翻页编码实现
步骤一:读取文本并且把文本转换成图片。
1.用MappedByteBuffer读取文本,MappedByteBuffer将文件直接映射到内存(这里的内存指的是虚拟内存,并不是物理内存,后面说证明这一点)。通常,可以映射整个文件,如果文件比较大的话可以分段进行映射,只要指定文件的那个部分就可以。具体可参照(http://blog.sina.com.cn/s/blog_679585110100tdcm.html)
public void openbook(String strFilePath) throws IOException {
book_file = new File(strFilePath);
long lLen =book_file.length();
m_mbBufLen = (int) lLen;
m_mbBuf = new RandomAccessFile(book_file,"r").getChannel().map(
FileChannel.MapMode.READ_ONLY, 0, lLen);
}
2.将文本转换成图片,如何确定一张图片可以容纳多少个字符。mPaint.breakText返回在宽度为mVisibleWidth的行中容纳的字符数。
int nSize = mPaint.breakText(strParagraph, true,mVisibleWidth,
null);
具体参考BookPageFactory.java,这个是网上一大牛写的,这一部分没有什么难度,代码也很清晰,看看源码就ok了。
步骤二:展示文本转换成的图片,并且翻页。
1. 展示文本转换成的图片很简单,用ImageView或者自定义View中。
2. 翻页效果
滑动翻页
用手指向左或者向右滑动,实现翻页。
方案一:
用PageView实现滑动翻页
try {
do {
mPageNum++;
Bitmap bmp = Bitmap.createBitmap(screenWidth,screenHeight,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
//将当前文本绘制成图片
pagefactory.onDraw(canvas);
View itemView =getLayoutInflater().inflate(R.layout.reader,
null);
ImageView reader = (ImageView)itemView
.findViewById(R.id.reader);
reader.setImageBitmap(bmp);
//将一张张转换后的图片加入到ViewPagerAdapter中
views.add(itemView);
} while (pagefactory.nextPage());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
vp = (ViewPager) findViewById(R.id.viewpager);
// 初始化Adapter
vpAdapter = new ViewPagerAdapter(views