基于Android的txt阅读器基本原理是什么
伊谢尔伦
伊谢尔伦 2017-04-17 11:47:56
[Android讨论组]

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

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

2 分页、浏览

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

3 一些翻页特效

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

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
迷茫
  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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号