Android:仿PC站点的小说阅读器(一)
前言
以前用过多个小说阅读器APP,有各种各样的款式,包含多种炫酷的翻页方式、漂亮的字体以及各种悦目的背景模式。甚至还有些附带小说朗读功能的下载选择。这些似乎都成为小说阅读APP的潮流。
当然,也有例外的:有一些本地文本阅读器夹杂在这些APP当中。简单干净的界面、文本阅读、本地化是其主要的标签。早些年,移动互联网还没有如今盛行的Android安卓形势,TXT文本和在线站点小说同时是小说阅读的两大主流方式。如今,小说阅读APP已然出现超越前二者的趋势,成为小说阅读的主流方式。
尽管形势比人强,但并不妨碍TXT文本小说爱好者的热情。基于此,bz决定写一个简单易用的本地文本阅读APP。
构想
由于篇幅和时间精力的限制,阅读APP的界面和功能必须尽可能的简洁。同时,考虑到读者的需求,应当尽可能地减少单位时间内电池的损耗。基于以上简单精益求精的要求,采用Webkit的WebView混合开发的方式,当前情境下是较为符合的。为了快速形成原型和符合原有读者的阅读习惯,可以采用像PC站点那样的在线小说阅读界面样式。
像一些小说阅读APP,虽然翻页方式炫酷多样,但是,每页字数非常有限,读者需要频繁的滑动或点击翻页。对于篇幅稍长的中长篇小说,完成阅读所需要花费在翻页上面的时间损耗是比较客观的。这对于一些需要细读和慢读的读者来说,这无疑是糟糕透顶的体验。因为,读者需要往回阅读或查找相关小说章节部分内容时,往往会重复翻页。而炫酷的翻页方式,这时会成为他们“细嚼慢咽”的阻碍,极大地降低其阅读热情和耐性。
所以,此类小说阅读APP正是本文所需实现的。
实践
Activity Layout
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/fullscreenBackgroundColor"
android:theme="@style/ThemeOverlay.MyApp.FullscreenContainer"
tools:context=".ReaderActivity">
<FrameLayout
android:id="@+id/nav_reader"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="16dp"
android:layout_gravity="bottom"
android:alpha=".5"
android:max="100"
android:padding="0dp"
android:progress="1" />
</FrameLayout>
<RelativeLayout
android:id="@+id/nav_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="52dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/nav_home"
android:layout_width="0dp"
android:layout_height="52dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_home_black_24dp" />