安卓初学及试编写一小说阅读器

有大量的时间,突然想自学安卓编程。自己有一点编程基础,但不精,也有好多年没接触过了,开始学习的时候已经有点迟了吧,之前看到人们都是用Eclipse+Android插件开发的,我决定直接用Android Studio,也不用去弄各种配置、环境等。

我是一个没什么耐心的人,以我一贯的作法,我更习惯直接开始编写一个程序,在编写的过程中学习,遇到一个问题就去学习、解决一个问题,于是我下载了最新的Android Studio,再看了一些简单的基础教程,就开始动手了,我先决定做一个小说阅读器。

这个应该不是很难的东西,主要是通过这个过程学习、了解安卓编程的知识,以及Android Studio的使用。


编写一个小说阅读器,我是这样来的:

一、首先要启动一个activity,能显示一段文字。哈,这没什么好说的,拉一个TextView就可以了。通过这一步,能简单了解这个控件的一些属性,如大小 位置 滚动等。以及app的图标 名称 layout和activity的关系等。

二、实现上一步了,就可以尝试通过网络来显示一篇文章。我没有现在的服务器,也没有现成API可以用,一开始就用HttpURLConnection来请求一个小说网页,得到HTML源码,并将源码显示在TextView中。

安卓初学及试编写一小说阅读器_第1张图片
网络请求不能放在主线程中

三、得到源码后,就对字符串进行处理,去除不必要的标记,只留下自己小说主要文本,一开始我用了正则表达式,很乱。下面就要考虑如何实现分页了,毕竟直接用TextView的垂直滚动不太舒服。

安卓初学及试编写一小说阅读器_第2张图片
直接得到HTML源码
安卓初学及试编写一小说阅读器_第3张图片
对HTML源码处理剩下小说正文

四、TextView如何实现分页呢?这时在网上找了很多文章,看的一头雾水,有的说计算每个字高宽,计算出屏幕能装下多少字符,再计算出能分多少页。有的说重写TextView实现原本没有的功能。具体如何做,我这水平是完全搞不懂的,我还是用我的笨办法吧。

我是定义一个int型名为page的数组,先将所有文本给TextView,再将首字符的位置给page数组中(此时为0),当点击下一页时,用全部文本字符数减去当前屏幕显示字符数,然后截取后再给TextView,同时再将当前屏幕的首字符位置给page数组(下标+1,此时这个数值正好是上一页屏幕所显示的字符数),以此类推,点些上一页时,再从page数组中取出数值,再截取就是了。

到此时,我的代码已经非常混乱了,下面就要考虑一些组织和UI了,不强求实用性,起码得看起来差不多吧。下一篇文章再继续。

你可能感兴趣的:(安卓初学及试编写一小说阅读器)