1
miao 2012-08-08 21:09:34 +08:00
写成html网页格式,想怎么控制都行,用浏览器看。或找别人写好的程序,xbeta.info很多介绍
|
2
rightgenius OP @miao 额,那加载本地文件方便嘛?页数还是解决不了啊 = =b
|
3
xatest 2012-08-08 22:51:34 +08:00
百分比按字节数算就够了吧,不用管行数,按记录的字节数偏移作为本页的起始,然后开始显示~
|
4
ljbha007 2012-08-08 23:37:27 +08:00
一般文本文件都不大 你可以一下全部放到控件里边 然后统计该控件被占了多少行 然后屏幕上放不下的部分就隐藏
|
5
rightgenius OP |
6
rightgenius OP @ljbha007 网络小说有的还是比较大的啊,就是在电脑上用txt打开都有可能会卡的那种……
|
7
ljbha007 2012-08-08 23:41:41 +08:00
@rightgenius 你看看sublime text 2不是就是直接把所有文本统统载入嘛 你想想要是一个文件大得文本编辑器打开都会卡了 你还会用文本编辑器来打开它吗?
|
8
ljbha007 2012-08-08 23:42:20 +08:00
@rightgenius 那就异步加载嘛 加载一部分 显示一部分 只要UI不卡住就没问题
|
9
ljbha007 2012-08-08 23:45:09 +08:00 1
@rightgenius 我以前用我老掉牙的HTC G4手机(600Mhz) 打开黑格尔的整部《小逻辑》 也只需要几秒钟 如果用多线程的话 用户根本感觉不出来
|
10
jjgod 2012-08-09 05:50:32 +08:00 1
1. 精确的总页数必须把整篇文章排版完才知道,但可以用一些方法估计到大致不错的,比如根据目前读入的字节数和排版完成的页数计算平均值,乘以总的字节数。
2. 行数类似,你也可以按照文件本身的换行来计算,当然这不是完全精确的。记录进度的时候也可以记阅读到的位置在文件中的行数,而不是显示的行数。这样重新载入时就可以直接显示从那一行开始的内容。要想直接跳到指定位置也可以记录一下文件偏移到该行数的映射,载入的时候直接 seek 过去。 3. 事实上第一次排版之后总的页数、显示时的行数都确定了,只要文件不改变这些就不会变,所以可以和文件的 hash 值一起记下来,只要文件 hash 不变就不重新计算,这样每次载入文件都只需要排版一页,翻页的时候再排版下一页就可以了。 4. 现在的 Android 手机,载入几十 M 的 txt 文件完全不在话下,主要的开销还是排版的时间和内存占用。 |
11
thinkinnight 2012-08-09 09:01:19 +08:00
哈哈,是在啥上面写?PC用的,还是手机用的?用什么语言?
在windows上面,对于字体的大小是可以通过API得到的 |
12
thinkinnight 2012-08-09 09:27:34 +08:00 1
晕,原来是Android节点,Android上面对于字体不清楚是否有这样的API。
其实阅读器比Notepad还要好做一些,因为没有了编辑,Undo/redo,保存等这样的操作,文件仅仅是只读的,可以在第一次读入的时候,将需要的信息做出一个数据结构,同时保存起来,下次打开的时候,直接从这个数据结构中得到就可以了。 行数和界面上换行是没有具体联系的,\n也就是一个普通的字符而已,所以还是一共有多少字符,现在跳转即可。而界面上可以进行处理。 |
13
rightgenius OP @jjgod 哇,好精彩~这让我想到可不可以用一个隐藏的窗口把文章排进去,拿到参数后就销毁掉~
周末试试~ |