首页 > 基于Android的txt阅读器基本原理是什么

基于Android的txt阅读器基本原理是什么

如题,一个APP里面需要内置阅读txt文本的功能,开源的阅读器FBReaderJ等都太庞大了,难以抽取出来,想自己做,求思路。

自己觉得有下面几点需要解决:
1 编码
文本格式不一样,有UTF8的,有ASCII的,不过好像有个juniversalchardet库可以自动检测,但是不知道准不准。

2 分页、浏览

怎么把一本书根据用户设置的字体大小进行分页计算?并且显示某一页?

3 一些翻页特效

其实我们的要求不是非常复杂,只要这些功能:
1 阅读(废话)
2 设置字号大小,背景色、字体颜色
3 简单的翻页特效(左右滑动就行)
4 记忆上次阅读位置

如果大家有什么好的现有可用的方案告诉我也行,谢谢。


  1. 编码问题可以统一转换为一种编码显示(如utf-8),可以用String.getBytes(String charsetName)String(byte[] bytes, String charsetName)

  2. 分页的效果,包括动画,可以用ViewPager实现。每页放一个TextView显示文字。通过记录ViewPagercurrentItem来保存当前的阅读状态,下次可以调用ViewPager.setCurrentItem(int item)实现跳转。

  3. 这个问题最难的还是如何把一堆文字按屏幕大小来分页。简单的思路就是,读取所有字符(防止文件过大,可以设置一次性读取的最大字符数)塞进第一屏,然后根据屏幕能显示的最大字符数截取,把截取后的字符放到第二屏显示,以此类推。

    如何获取屏幕能显示的最大字符数:

    • Layout.getLineForVertical(int vertical) 首先是这个方法,根据传入的纵坐标(字的左上角纵坐标)返回相应的行数。
    • Layout.getLineEnd(int line)然后是这个方法,根据传入的行数,返回该行最后一个字符在所有字符中的位置。

http://developer.android.com/reference/android/text/Layout.html
http://my.oschina.net/u/568626/blog/136860

【热门文章】
【热门文章】