我的首个电子书软件--嘎嘎读书 的开发(八)
来源:互联网 发布:覆盖索引 mysql 编辑:程序博客网 时间:2024/05/17 22:21
今天讲阅读页,这作为嘎嘎读书系列的最后一篇文章吧,然后我会开始另外的项目分享,废话不说。先上截图。
还记得上篇文章最后的提醒么,大家必须先具备了自定义view的重绘等相关知识,才能做出阅读页。首先去百度下“android自定义view”这个关键词吧。我先来说下为什么要使用android的自定义view。
大家会发现譬如ireader 书旗等读书软件,都会有一个近似真实的翻页效果的阅读页,而android原生的view能够承接字体的比如textview,edit 都是不能够满足此效果的,这个时候,原生那些好用的view或者>p.measureText方法来测试一下,将200个字中前17个字拿出来,构成字符串,调用p.measureText(str) 如果返回值小于400 就测试18个字,18个字还小,就测试19个字,直到超过400停止,比如此时发现时20个字超过400,那么合适的字数就是19,那么将200个字的前19个字取出,将来放在第一行,剩下的字开始组装下一行的文字,依次循环,直到200个字都用光,我们就可以得到很多一行一样的文字。
接下来,我们就需要将这些分好的行文字分页,因为任何一篇正常的文章都不可能一屏将所有文字都显示完全,分页的规则很简单,类似于分行,只不过并不需要measure方法,譬如24号字,而手机屏幕可以绘制范围是720高,那么大概能承担720/24=30行文字,而事实上 如果我们真这么干,那么最后文字将会挤在一起没法阅读。因为我们忘了其实有个行距的概念,这个也是可以自己估计的,比如我们要单倍的行距,也就是说两行文字间相隔一行文字的距离,那么我们手机屏幕一屏可以绘制的行数就是720/48=15行左右,而根据不同手机,或者我们的审美感觉,可以自定义比较合适的行距来调节一屏可绘制行数。这个就看个人的喜好了。
最后我们讲准备好的15行文字封转到一个数据结构中,为绘制做准备,当onDraw被调用时,就在屏幕上对应的位置绘制出每行文字,一屏文字就绘制完毕,而且你会看到距离什么的都刚刚好,而如果还有剩余的文字,那么这些文字当然就成为下一页要绘制的文字,那么下一页只要仿照此页的做法,绘制文字,最终总会将所有文字绘制到屏幕上。而我们要的读书的效果就有了。
讲到这里,大家应该有一个初步概念,我们必须先将一个长文字按照画笔和屏幕的设置,分割成行以及页的数据结构,然后交由view来有序绘制。而将来我要用view显示任何一段文字,只要将这段文字传入view,view的工作就是先将文字分析,然后绘制。这样一个大概的流程就形成了。
下面先贴出来用来存储被分割后文字的数据结构:
1.一行文字的存储数据结构:
我特别气愤的是我写了两个小时的东西,竟然没有保存下来,我都点保存了,结果竟然!没了!还找不回来了!伤心!这个编辑器太坑了。nnd!算了 不写了,大家应该没有看到关于动画 帧 双缓冲的内容!因为点了发表文章之后发现!直接给我阉割掉了!nnd!气死我了!老子不写了!起码有一千字不见了!我灰常生气!下面贴出来源码大家自己看吧!我就当我写了.....顺便提醒下大家用这个csdn的编辑器 不要用那个直接往里面贴源码的那个功能!估计就是那个功能坑的爹啊!老老实实用代码片吧!编辑器!我去年买了个表!!!!
- 我的首个电子书软件--嘎嘎读书 的开发(八)
- 我的首个电子书软件--嘎嘎读书 的开发(一)
- 我的首个电子书软件--嘎嘎读书 的开发(二)
- 我的首个电子书软件--嘎嘎读书 的开发(三)
- 我的首个电子书软件--嘎嘎读书 的开发(四)
- 我的首个电子书软件--嘎嘎读书 的开发(五)
- 我的首个电子书软件--嘎嘎读书 的开发(六)
- 我的首个电子书软件--嘎嘎读书 的开发(七)
- 我读书(包括电子书)的方法
- 我的大学生活写真(嘎嘎)
- 我开发的首个软件系统
- 我开发的第一个Android软件
- 我开发的第二个Android软件
- 我开发的一个电子书管理器
- 开发的斗地主截图.嘎嘎
- 软件开发这点事儿:软件开发工具手册(奋斗的小鸟)_PDF 电子书
- 我的j2me 创意 手机电子书阅读软件基本框架
- 阿斯顿发的嘎嘎的
- Java线程(四):线程中断、线程让步、线程睡眠、线程合并
- 黑马程序员_java高新技术总结【1】(枚举和部分java新特性)
- 正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度
- 常用javascript函数(正则)
- js限制输入内容
- 我的首个电子书软件--嘎嘎读书 的开发(八)
- JSON知识点整理
- 黑马程序员_注解
- pure-ftp 启用虚拟账户的问题
- Spring定时器在SSH框架中的应用
- C++代码优化
- Eclipse上GIT插件EGIT使用手册
- 倒计时插件
- 黑马程序员_类加载器